Saya harus menyalin pohon direktori besar, sekitar 1,8 TB. Semuanya lokal. Karena kebiasaan saya akan menggunakan rsync
, namun saya bertanya-tanya apakah ada gunanya, dan jika saya lebih suka menggunakannya cp
.
Saya khawatir tentang izin dan uid / gid, karena harus disimpan dalam salinan (saya tahu rsync melakukan ini). Serta hal-hal seperti symlink.
Tujuannya kosong, jadi saya tidak perlu khawatir memperbarui beberapa file dengan syarat. Ini semua disk lokal, jadi saya tidak perlu khawatir tentang ssh atau jaringan.
Alasan saya tergoda jauh dari rsync, adalah karena rsync mungkin melakukan lebih dari yang saya butuhkan. file rsync checksums. Saya tidak membutuhkan itu, dan saya khawatir itu akan memakan waktu lebih lama dari cp.
Jadi apa yang menurutmu, rsync
atau cp
?
Jawaban:
Saya akan menggunakan rsync karena artinya jika terputus karena alasan apa pun, maka Anda dapat memulai kembali dengan mudah dengan biaya yang sangat sedikit. Dan menjadi rsync, ia bahkan dapat memulai kembali sebagian jalan melalui file besar. Seperti yang disebutkan orang lain, itu dapat mengecualikan file dengan mudah. Cara paling sederhana untuk melestarikan sebagian besar hal adalah dengan menggunakan
-a
bendera - 'arsip'. Begitu:Meskipun UID / GID dan symlink dipertahankan oleh
-a
(lihat-lpgo
), pertanyaan Anda menyiratkan bahwa Anda mungkin ingin salinan lengkap dari informasi sistem file; dan-a
tidak termasuk tautan keras, atribut yang diperluas, atau ACL (di Linux) atau di atas atau garpu sumber daya (di OS X.) Jadi, untuk salinan sistem file yang kuat, Anda harus menyertakan flag-flag tersebut:Cp default akan mulai lagi, meskipun
-u
flag akan "menyalin hanya ketika file SOURCE lebih baru dari file tujuan atau ketika file tujuan hilang" . Dan-a
bendera (arsip) akan bersifat rekursif, bukan menyalin file jika Anda harus memulai ulang dan mempertahankan izin. Begitu:sumber
Saat menyalin ke sistem file lokal saya selalu menggunakan opsi rsync berikut:
Inilah alasan saya:
Saya telah melihat transfer 17% lebih cepat menggunakan pengaturan rsync di atas melalui perintah tar berikut seperti yang disarankan oleh jawaban lain:
sumber
rsync: --no-compress: unknown option
@Ellis Percival.rm -rf /src/
.Ketika saya harus menyalin sejumlah besar data, saya biasanya menggunakan kombinasi tar dan rsync. Pass pertama adalah untuk tar itu, kira-kira seperti ini:
Biasanya dengan sejumlah besar file, akan ada beberapa tar yang tidak dapat menangani karena alasan apa pun. Atau mungkin prosesnya akan terganggu, atau jika ini adalah migrasi sistem file, Anda mungkin ingin melakukan salinan awal sebelum langkah migrasi yang sebenarnya. Bagaimanapun, setelah salinan awal, saya melakukan langkah rsync untuk menyinkronkan semuanya:
Perhatikan bahwa trailing slash on
/src/
penting.sumber
pv
di tengah untuk dapat menonton kemajuan, memperkirakan ukuran semua data yang digunakandf
. Saya juga menggunakan--numeric-owner
, karena disk sumber berasal dari sistem lain dan saya tidak ingintar
mengacaukan pemilik:tar -C /old-path --numeric-owner -S -c . | pv -tpeba -s 100G | tar -C /new-path --numeric-owner -S -xp
rsync
Berikut adalah rsync yang saya gunakan, saya lebih suka cp untuk perintah sederhana, bukan ini.
cpio
Inilah cara yang bahkan lebih aman, cpio. Ini tentang secepat tar, mungkin sedikit lebih cepat.
ter
Ini juga bagus, dan berlanjut pada kegagalan baca.
Perhatikan itu semua hanya untuk salinan lokal.
sumber
Apapun yang kamu inginkan. Hanya saja, jangan lupa
-a
saklar ketika Anda memutuskan untuk menggunakancp
.Jika Anda benar-benar membutuhkan jawaban: Saya akan menggunakan rsync karena jauh lebih fleksibel. Perlu mematikan sebelum penyalinan selesai? Cukup ctrl-c dan lanjutkan segera setelah Anda kembali. Perlu mengecualikan beberapa file? Gunakan saja
--exclude-from
. Perlu mengubah kepemilikan atau izin? rsync akan melakukannya untuk Anda.sumber
The
rsync
perintah selalu menghitung checksum pada setiap byte itu transfer.Opsi baris perintah
--checksum
hanya berkaitan dengan apakah checksum file digunakan untuk menentukan file mana yang akan ditransfer atau tidak, yaitu:Halaman manual juga mengatakan ini:
Demikian
rsync
juga, selalu, menghitung checksum dari seluruh file di sisi penerima, bahkan ketika-c/ --checksum
opsi "mati".sumber
rsync -aPhW --protocol=28
membantu mempercepat salinan besar itu dengan RSYNC. Saya selalu pergi rsync karena memikirkan menjadi pertengahan 90GiB dan itu membuat saya takut menjauh dari CPsumber
rsync bagus, tetapi memiliki masalah dengan pohon direktori yang sangat besar karena menyimpan pohon dalam memori. Saya hanya ingin melihat apakah mereka akan memperbaiki masalah ini ketika saya menemukan utas ini.
Saya juga menemukan:
http://matthew.mceachen.us/geek/gigasync/
Anda juga bisa memecah pohon secara manual dan menjalankan beberapa rsyncs.
sumber
Utas ini sangat berguna dan karena ada begitu banyak pilihan untuk mencapai hasil, saya memutuskan untuk membandingkan beberapa dari mereka. Saya percaya hasil saya dapat membantu orang lain untuk mengetahui apa yang bekerja lebih cepat.
Untuk memindahkan 532Gb data yang didistribusikan di antara 1.753.200 file, kami memiliki waktu-waktu tersebut:
rsync
Butuh 232 menittar
Butuh 206 menitcpio
Butuh 225 menitrsync + parallel
Butuh 209 menitDalam kasus saya, saya lebih suka menggunakan
rsync + parallel
. Saya harap informasi ini membantu lebih banyak orang untuk memutuskan di antara alternatif-alternatif ini.Patokan lengkap diterbitkan di sini
sumber
cp
? Inilah judul pertanyaannya!cp
tidak aman, yaitu: ketika istirahat Anda harus memulai dari awal, itu cara saya mendukung opsi yang dapat dilanjutkan, ergorsync
adalah favorit saya :)Ketika melakukan salinan direktori lokal lokal, pengalaman saya adalah bahwa "cp -van src dest" adalah 20% lebih cepat dari rsync. Sejauh restartability, itulah yang dilakukan "-n". Anda hanya perlu rm file yang disalin sebagian. Tidak menyakitkan kecuali ISO atau semacamnya.
sumber
ARJ ADALAH SEKOLAH LAMA !! Saya benar-benar ragu bahwa ARJ dan / atau rsync akan memberikan kinerja.
Yang pasti selalu saya lakukan adalah menggunakan cpio:
Ini hampir cepat daripada CP, jelas lebih cepat dari tar dan tanpa pipa apa pun.
sumber
cpio
halaman manual FreeBSD .cpio
sayangnya memiliki batas atas 8GB untuk file.find
perintah, seperti yang Anda daftarkan, memiliki pipa di dalamnya:find . -print | cpio -pdm /target/folder
Anda pasti ingin mencoba rclone . Hal ini gila cepat:
Ini adalah salinan lokal dari dan ke LITEONIT LCS-256 (256GB) SSD.
Anda dapat menambahkan
--ignore-checksum
pada menjalankan pertama untuk membuatnya lebih cepat.sumber
Keduanya akan bekerja dengan baik.
sumber
tar
akan juga melakukan pekerjaan itu, tetapi tidak akan melanjutkan dari terganggu seperti yang akan dilakukan rsync.sumber
Bagaimana jika Anda menggunakan ARJ?
di mana
-jm -m1
level kompresi dan-je
membuatnya menjadi executable. Sekarang Anda memiliki bash file yang dienkapsulasi.Kemudian untuk ekstraksi ke peta target
di mana peta sumber akan dibuat (di mana
-y
selalu menerima, menimpa, lewati dll)Satu kemudian dapat scp ftp filepack ke area target dan jalankan, jika itu mungkin.
sumber
Ada beberapa speed-up yang dapat diterapkan ke
rsync
:Menghindari
-z
/--compress
: kompresi hanya akan memuat CPU karena transfer tidak melalui jaringan tetapi lebih dari RAM.--append-verify
: melanjutkan transfer yang terputus. Ini kedengarannya seperti ide yang bagus, tetapi memiliki kasus kegagalan berbahaya: file tujuan apa pun dengan ukuran yang sama (atau lebih besar) dari sumbernya akan di-IGNORED. Selain itu, checksum seluruh file di akhir, yang berarti tidak ada mempercepat secara signifikan--no-whole-file
sambil menambahkan kasus kegagalan berbahaya.Menggunakan
-S
/--sparse
: mengubah urutan null menjadi blok jarang--partial
atau-P
yang--partial --progress
: menyimpan file yang ditransfer sebagian untuk melanjutkan kembali di masa depan. Catatan: file tidak akan memiliki nama sementara, jadi pastikan tidak ada lagi yang mengharapkan untuk menggunakan tujuan sampai seluruh salinan selesai.--no-whole-file
sehingga segala sesuatu yang perlu dikirim ulang menggunakan transfer delta. Membaca setengah dari file yang ditransfer sebagian seringkali jauh lebih cepat daripada menulisnya lagi.--inplace
untuk menghindari penyalinan file (tetapi hanya jika tidak ada yang membaca tujuan sampai seluruh transfer selesai)sumber