Bagaimana cara memindahkan direktori yang memiliki file yang sama dari satu ke partisi lain?
Mari kita asumsikan kita memiliki partisi yang terpasang pada /mnt/X
direktori yang berbagi file dengan hardlink. Cara memindahkan direktori tersebut ke partisi lain, biarkan /mnt/Y
dengan menjaga hardlink tersebut.
Untuk ilustrasi yang lebih baik apa yang saya maksud dengan "direktori berbagi file yang sama dengan hardlink", berikut adalah contohnya:
# let's create three of directories and files
mkdir -p a/{b,c,d}/{x,y,z}
touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5}
# and copy it with hardlinks
cp -r -l a hardlinks_of_a
Untuk lebih spesifik, mari kita asumsikan bahwa ukuran total file adalah 10G dan setiap file memiliki 10 hardlink. Pertanyaannya adalah bagaimana cara memindahkannya ke tujuan dengan menggunakan 10G (seseorang mungkin mengatakan tentang menyalinnya dengan 100G dan kemudian menjalankan deduplikasi - bukan itu yang saya tanyakan)
rsync memiliki
-H
atau--hard-links
opsi untuk ini, dan memiliki manfaat rsync yang biasa untuk dapat dihentikan dan dimulai kembali, dan dijalankan kembali untuk secara efisien menangani file yang diubah selama / setelah menjalankan sebelumnya.Baca
rsync
halaman manual dan cari -H. Ada lebih banyak detail di sana tentang peringatan tertentu.sumber
man rsync
: Dimulai dengan rsync 3.0.0, algoritma rekursif yang digunakan sekarang adalah pemindaian bertahap yang menggunakan memori jauh lebih sedikit daripada sebelumnya dan memulai transfer setelah pemindaian beberapa direktori pertama telah selesai. Pemindaian tambahan ini hanya memengaruhi algoritme rekursi kami, dan tidak mengubah transfer non-rekursif. Ini juga hanya mungkin ketika kedua ujung transfer setidaknya versi 3.0.0. Perhatikan bahwa baik--delete-before
dan--delete-after
nonaktifkan algoritma yang ditingkatkan ini.rsync
juga sangat berguna, ini tidak selalu merupakan alat terbaik untuk setiap pekerjaan. Hari-hari ini, saya lebih suka menggunakan dataset ZFS sehingga saya bisa memotret danzfs send
mereka - saya kebanyakan menggunakan rsync pada sistem file non-ZFS.btrfs
memiliki snapshot + kemampuan kirim yang sama.Jawaban ketiga: Cara POSIX
POSIX belum membakukan standar
tar
utilitas, meskipun mereka telah membakukantar
format arsip. Utilitas POSIX untuk memanipulasi arsip tar disebutpax
dan ia memiliki fitur bonus untuk dapat melakukan paket dan membongkar operasi dalam satu proses tunggal.sumber
Jawaban kedua: The Ancient UNIX Way
Buat arsip tar di direktori sumber, kirim melalui pipa, dan bongkar di direktori tujuan.
sumber
tar
mempertahankan tautan keras. Di GNU tar, setidaknya, Anda dapat menonaktifkan perilaku ini dengan--hard-dereference
tar x
tidak memiliki daftar file lengkap karena file masih disalurkan daritar c
. Mungkin jika Anda menyimpan seluruh arsip sebelum mengekstraknya, tidak apa-apa. Saya akan sangat senang jika seseorang dapat mengkonfirmasi teori itu.Sumber: http://www.cyberciti.biz/faq/linux-unix-apple-osx-bsd-rsync-copy-hard-links/
Yang Anda butuhkan untuk membuat salinan persisnya adalah
sumber