GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara seseorang mengubah symlink ke direktori di busybox?

Ini bisa memang dilakukan secara atomik dengan rename(2) , dengan terlebih dahulu membuat symlink baru dengan nama sementara dan kemudian dengan bersih menimpa symlink lama sekaligus. Seperti yang dinyatakan halaman manual:

Jika jalur baru mengacu pada tautan simbolik, tautan tersebut akan ditimpa.

Di shell, Anda akan melakukan ini dengan mv -T sebagai berikut:

$ mkdir a b
$ ln -s a z
$ ln -s b z.new
$ mv -T z.new z

Anda dapat strace perintah terakhir untuk memastikan bahwa memang menggunakan rename(2) di bawah tenda:

$ strace mv -T z.new z
lstat64("z.new", {st_mode=S_IFLNK|0777, st_size=1, ...}) = 0
lstat64("z", {st_mode=S_IFLNK|0777, st_size=1, ...}) = 0
rename("z.new", "z")                    = 0

Perhatikan bahwa di atas, keduanya mv -T dan strace khusus untuk Linux.

Di FreeBSD, gunakan mv -h secara bergantian.


Mengambil di mana Arto tinggalkan di sini, ini sepenuhnya mungkin, bahkan tanpa mv -T , Anda hanya perlu membuat symlink baru dengan nama yang sama dengan direktori target dan mv ke direktori induk target Anda:

mkdir -p tmp/real_dir1 tmp/real_dir2
touch tmp/real_dir1/a tmp/real_dir2/a
# start with ./target_dir pointing to tmp/real_dir1
ln -s tmp/real_dir1 target_dir
# create a symlink named target_dir in tmp, pointing to real_dir2
ln -sf tmp/real_dir2 tmp/target_dir
# atomically mv it into ./ replacing ./target_dir
mv tmp/target_dir ./

Contoh kode diambil melalui (http://axialcorps.wordpress.com/2013/07/03/atomically-replacing-files-and-directories/)


Sudahkah Anda mencoba ln -snf ?

Opsi -n menimpa tujuan alih-alih menulis di bawahnya ketika tujuannya adalah tautan simbolis ke direktori.

Salam


Linux
  1. Cara Mengubah Direktori 'DocumentRoot' Apache Default di Linux

  2. Cara Membuat Pengguna Dengan Direktori Home Kustom Di Linux

  3. Bagaimana Cara Memindahkan Satu Direktori ke Bawah?

  1. Bagaimana cara mengubah direktori root dari server Apache?

  2. Bagaimana cara mengubah direktori startup gnome-terminal?

  3. Bagaimana cara mengidentifikasi distro linux yang digunakan?

  1. Cara memperbarui symlink Linux

  2. Bagaimana mengubah semua kemunculan kata di semua file dalam direktori

  3. Symlink dari satu workstation ke workstation lain tanpa mount