melanjutkan menyalin file linux


9

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).

Jawaban:


4

Saya akan mencoba rsync -a /from/file /dest/file.


1
dan sementara kita berbicara tentang rsync, perhatikan bahwa Anda dapat menyalin secara langsung ke mesin jarak jauh [mendukung SSH] menggunakan rsync -az -e ssh / dari / file user@dest.ation: / full / dest / path
Mikeage

2
Wow. menjalankan rsync seperti itu tanpa opsi apa pun akan menghapus / dest / file dan mengirimkan kembali semuanya. Bagaimana ini bisa dipilih?
Justin

1
Bagaimana cara mempertahankan atribut file (-a) membantu? Haruskah ini menjadi - append?
Malvineous

3

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.datdan hanya setengahnya ada di direktori saat ini, untuk melanjutkan:

curl -C - -O "file:///media/CORSAIR/somefile.dat"


Terima kasih atas tipnya, saya harus menggunakan tip ini karena saya menyalin dari server Windows SMB (jadi tidak ada rsync) ketika koneksi yang lambat hilang, dan saya tidak ingin mengunduh 500MB dari awal.
MiKy

2

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.)

host1> rsync -aP file user@host2:/path/to/new/dir/

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.


2

Perintah yang Anda inginkan akan menjadi sesuatu seperti

rsync -v --append /path/to/afile /mnt/server/dest/afile

kecuali Anda dapat mengakses server melalui ssh dan menjalankan rsync dengan cara itu, dalam hal itu perintah yang diberikan FlyingFish adalah yang terbaik.


0

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.


Apa yang Anda katakan tentang rsync salah. man rsync, baca apa yang dilakukan opsi --append.
Justin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.