Saat ini saya memiliki dua server CentOS. Saya perlu tahu bagaimana dan apa cara tercepat untuk "tar" direktori gambar dan SCP selesai?
Apakah itu cara tercepat yang saya sarankan, karena tarring mengambil selamanya ... Saya menjalankan perintah:
tar cvf imagesbackup.tar images
Dan saya akan langsung menyelesaikannya.
Beri tahu saya jika ada cara yang lebih cepat. Saya memiliki akses jarak jauh / SSH ke kedua mesin.
file-transfer
scp
tar
Andrew Fashion
sumber
sumber
Jawaban:
Alih-alih menggunakan tar untuk menulis ke disk lokal Anda, Anda dapat menulis langsung ke server jauh melalui jaringan menggunakan ssh.
String apa pun yang mengikuti perintah "ssh" Anda akan dijalankan pada server jarak jauh alih-alih login interaktif. Anda dapat menyalurkan input / output ke dan dari perintah-perintah jarak jauh melalui SSH seolah-olah mereka lokal. Menempatkan perintah dalam tanda kutip menghindari kebingungan, terutama saat menggunakan pengalihan.
Atau, Anda dapat mengekstrak file tar di server lain secara langsung:
Perhatikan opsi yang jarang digunakan
-C
. Ini berarti "ubah ke direktori ini terlebih dahulu sebelum melakukan sesuatu."Atau, mungkin Anda ingin "menarik" dari server tujuan:
Perhatikan bahwa
<(cmd)
konstruksinya baru untuk bash dan tidak berfungsi pada sistem yang lebih lama. Ini menjalankan program dan mengirimkan output ke pipa, dan mengganti pipa itu ke dalam perintah seolah-olah itu file.Saya bisa saja dengan mudah menulis di atas sebagai berikut:
Atau sebagai berikut:
Atau, Anda dapat menyelamatkan diri dari kesedihan dan cukup menggunakan rsync:
Akhirnya, ingat bahwa mengompresi data sebelum transfer akan mengurangi bandwidth Anda, tetapi pada koneksi yang sangat cepat, mungkin benar-benar membuat operasi mengambil lebih banyak waktu . Ini karena komputer Anda mungkin tidak dapat mengompres dengan cukup cepat untuk mengikutinya: jika mengompresi 100MB lebih lama dari yang dibutuhkan untuk mengirim 100MB, maka lebih cepat untuk mengirimnya tanpa kompresi.
Sebagai alternatif, Anda mungkin ingin mempertimbangkan untuk mem-piping sendiri gzip (daripada menggunakan opsi -z) sehingga Anda bisa menentukan level kompresi. Sudah pengalaman saya bahwa pada koneksi jaringan cepat dengan data kompresibel, menggunakan gzip pada level 2 atau 3 (defaultnya adalah 6) memberikan throughput keseluruhan terbaik dalam kebanyakan kasus. Seperti itu:
sumber
Saya akan tergoda untuk me-rsync-nya sendiri - ia melakukan kompresi dan menangani kehilangan tautan dengan baik.
sumber
Jika Anda hanya menaruhnya dan tidak ada yang lain ini akan membuang banyak waktu dengan hanya mendapatkan kecepatan minimal.
Jadi hanya dengan menyimpan file dengan switch cvf akan secara efektif menghabiskan waktu yang diperlukan untuk membaca semua gambar 55GB dan menulisnya kembali ke disk. (Secara efektif akan lebih banyak waktu terbuang karena akan ada overhead yang cukup besar).
Hanya ada satu keuntungan yang Anda dapatkan di sini, biaya overhead untuk mengunggah banyak file sedang dikurangi. Anda mungkin mendapatkan waktu transfer yang lebih cepat jika Anda mengompres gambar (tetapi karena saya percaya mereka sudah dalam format terkompresi, ini tidak akan banyak membantu). Hanya lebih banyak buang waktu komputasi.
Kerugian terbesar dari mentransfer tar archiv besar melalui kawat adalah bahwa jika terjadi kesalahan itu bisa berarti Anda harus memulai dari awal.
Saya akan menggunakan cara itu:
Di server baru
Dan kemudian
diff
. Dan karena scp mendukung kompresi dengan cepat, tidak perlu arsip terpisah.Sunting
Saya akan menyimpan informasi MD5 karena berguna untuk OP. Tapi satu komentar mengejutkan saya dengan wawasan baru. Jadi sedikit pencarian disediakan informasi yang berguna ini. Harap dicatat bahwa subjek di sini adalah SFTP tidak secara langsung SCP .
sumber
Di atas saran md5sum Pacey, saya akan menggunakan yang berikut:
Di tempat tujuan:
nc -w5 -l -p 4567 | tar -xvf -
Kemudian pada sumbernya:
tar -cvf - /path/to/source/ | nc -w5 destinationserver 4567
Itu masih tar / untar, dan tidak ada enkripsi, tetapi langsung ke server lain. Mulai keduanya secara bersamaan (
-w5
beri Anda waktu 5 detik.) Dan tontonlah. Jika bandwidth ketat, tambahkan -z ke tar di kedua ujungnya.sumber
Satu titik - tidak semua host memiliki rsync dan host mungkin memiliki versi tar yang berbeda. Untuk alasan ini, seseorang dapat merekomendasikan sebagai port of call pertama menggunakan cpio yang sering diabaikan.
Anda dapat cpio over ssh untuk melakukan replikasi ad-hoc dari struktur file / direktori antar host. Dengan cara ini Anda memiliki kontrol yang lebih baik atas apa yang dikirim karena Anda perlu "memberi makan" cpio, nom-nom. Ini juga lebih portabel-argumen, cpio tidak banyak berubah - ini adalah poin penting jika Anda mencari beberapa host di lingkungan yang heterogen.
Contoh menyalin / mengekspor / home dan subdirs ke host jarak jauh:
Di atas akan menyalin konten / ekspor / rumah dan subdirektori ke / ekspor / rumah di host jarak jauh.
Semoga ini membantu.
sumber
Jika Anda memiliki akses ssh, Anda memiliki akses rsync.
atau
Jika Anda menerima kesalahan seperti "rsync error: beberapa file tidak dapat ditransfer (kode 23) di main.c (977) [sender = 2.6.9]", periksa pengguna dan grup di antara server; Anda mungkin memiliki ketidakcocokan.
Gunakan opsi rsync "-z" jika Anda ingin rsync mengompres transfer. Opsi ini akan menggunakan lebih banyak CPU tetapi lebih sedikit bandwidth, jadi waspadalah.
Ada opsi "- kemajuan" yang akan memberi Anda persen yang ditransfer, yang agak baik jika Anda suka hal semacam itu.
sumber
Apakah mereka menggunakan jaringan bersama alih-alih membutuhkan internet untuk mentransfer file? NFS atau FTP mungkin jauh lebih cepat daripada overhead SCP, meskipun Anda akan kehilangan enkripsi selama transfer.
sumber
Atau Anda selalu dapat menggunakan pipa tar:
'j' = bzip2, Anda dapat menggunakan 'z' untuk gzip atau --lzma jika tar Anda mendukungnya.
sumber