Bagaimana saya melanjutkan salinan file besar di linux? Saya memiliki file besar (serveral gigabyes) sebagian disalin ke drive jaringan, dan butuh waktu lama, dan sebagian besar dilakukan sebelum operasi penyalinan berhenti karena masalah jaringan yang sekarang diperbaiki. Bagaimana cara melanjutkan salinan file. Saya tidak ingin skrip yang tidak efisien, dan ecp tidak berfungsi (sepertinya tidak berfungsi untuk file besar).
9
Jika Anda tahu Anda hanya perlu menambahkan file lokal dan tidak ingin menggunakan rsync (yang berpotensi memakan waktu lama menghitung checksum), Anda dapat menggunakan curl. Misalnya, jika Anda memiliki file besar pada USB stick yang bisa dilepas yang terpasang di
/media/CORSAIR/somefile.dat
dan hanya setengahnya ada di direktori saat ini, untuk melanjutkan:curl -C - -O "file:///media/CORSAIR/somefile.dat"
sumber
Ya rsync adalah cara untuk pergi. Bagi saya, kami telah mentransfer 100 + GB data melalui rsync + ssh. Jika Anda mencari salinan cadangan yang benar, pastikan Anda menggunakan opsi
-a
(arsip) untuk mempertahankan atribut file (waktu, pemilik, perms, dll.)Ini juga berguna untuk menyalin file besar yang dapat berubah selama migrasi. Anda dapat memuat data sebelumnya ke tujuan dan setelah siap untuk salinan final, lakukan lagi tetapi hanya untuk sebagian kecil dari waktu. Anda dapat menghemat waktu henti yang sebenarnya dengan menggunakan rsync untuk potensi penuhnya.
Penggunaan PS
v
(verbose) dapat memperlambat transfer banyak file.sumber
Perintah yang Anda inginkan akan menjadi sesuatu seperti
kecuali Anda dapat mengakses server melalui ssh dan menjalankan rsync dengan cara itu, dalam hal itu perintah yang diberikan FlyingFish adalah yang terbaik.
sumber
rsync hanya baik jika Anda memiliki rsync di server tujuan. Kalau begitu, itu memang solusi terbaik.
Tapi tidak sebaliknya. Karena titik rsync hanya menyalin bagian yang diubah dalam file besar, ia menganggap bagian yang diubah ini dapat berada di mana saja dalam file. Ini berarti akan memeriksa semua blok yang sudah disalin. Jika Anda tidak memiliki rsync di remote, rsync lokal Anda akan memulai dengan membaca kembali semua yang sudah ditransfer.
Jika mesin sumber Anda memiliki server web atau ftp, Anda dapat menggunakan wget dari server tujuan dengan opsi "--continue". (atau menggulung dengan opsi "--continue-at [- | size]").
Jika mesin tujuan Anda memiliki server FTP, Anda dapat menggunakan curl pada mesin sumber dengan opsi --append.
Sebagai upaya terakhir, Anda dapat menggunakan dd dengan argumen "bs =" (ukuran blok), "skip =" dan "seek =". Sebagai contoh:
Mari kita asumsikan Anda akan dapat menggunakan blok 2048 byte. Jika file tujuan Anda saat ini 2'048'000'000 byte (2 GB), itu adalah 1'000'000 blok yang terdiri dari 2048 byte. Untuk menambahkan sisa file sumber Anda ke tujuan, Anda bisa
dd if = source_file of = destination_file bs = 2048 skip = 1000000 seek = 1000000
Anda mungkin dapat menggunakan ukuran blok yang lebih besar untuk meningkatkan kecepatan transfer. Hanya ingat untuk menentukan ukuran blok dengan bs = dan bahwa nilai yang diberikan untuk melewati dan mencari adalah dalam blok, bukan dalam byte.
sumber