awesome-go/impl/files-manipulation/10-HardlinkSymlink.go

49 lines
1.1 KiB
Go
Raw Normal View History

package main
import (
"fmt"
"log"
"os"
)
func main() {
/*
Hard Links and Symlinks
*/
// Bir "Hard Link" oluştur
// Aynı içeriğe işaret eden iki dosya adı olacaktır.
// Birinin içeriğini değiştirmek diğerini değiştirecek
// Birini silmek / yeniden adlandırmak diğerini etkilemez
err := os.Link("demo.txt", "demo_also.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println("sym oluşturma")
// Symlink oluştur
err = os.Symlink("demo.txt", "demo_also.txt")
if err != nil {
log.Fatal(err)
}
// Lstat dosya bilgisini döndürür.
// Ama aslında o bir symlink ise symlink hakkında bilgi döndürür.
// Bağlantıyı takip etmeyecek ve gerçek dosya hakkında bilgi vermeyecektir.
// Symlink'ler Windows'da çalışmaz.
fileInfo, err := os.Lstat("demo_sym.txt")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Bağlantı Bilgisi: %+v", fileInfo)
// Sadece bir symlink'in sahipliğini değiştir.
// Ama işaret ettiği dosyanın sahipliğini değiştirmez.
err = os.Lchown("demo_sym.txt", os.Getuid(), os.Getgid())
if err != nil {
log.Fatal(err)
}
}