Berkat jawaban luar biasa Scott Pack (saya tidak tahu bagaimana melakukan ini dengan ssh sebelumnya), saya dapat menawarkan peningkatan ini (jika bash
ada shell Anda). Ini akan menambah kompresi paralel, indikator kemajuan dan memeriksa integritas di seluruh tautan jaringan:
tar c file_list |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
tar xC /directory/to/extract/to
'
pv
adalah program penampil progres yang bagus untuk pipa Anda dan pigz
merupakan program gzip paralel yang menggunakan sebanyak mungkin utas CPU Anda secara default (saya percaya hingga 8 maks). Anda dapat mengatur tingkat kompresi agar lebih sesuai dengan rasio CPU dengan bandwidth jaringan dan menukar dengan pxz -9e
dan pxz -d
jika Anda memiliki lebih banyak CPU daripada bandwidth. Anda hanya perlu memverifikasi bahwa kedua jumlah cocok setelah selesai.
Opsi ini berguna untuk jumlah data yang sangat besar serta jaringan latensi tinggi, tetapi tidak sangat membantu jika tautannya tidak stabil dan turun. Dalam kasus tersebut, rsync mungkin merupakan pilihan terbaik karena dapat dilanjutkan.
Output sampel:
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e - ]
176MiB [9.36MiB/s] [9.36MiB/s] [ <=> ]
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e -
Untuk perangkat blok:
dd if=/dev/src_device bs=1024k |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
dd of=/dev/src_device bs=1024k
'
Jelas, pastikan ukuran atau batasnya sama dengan count =, skip =, seek =, dll.
Ketika saya menyalin filesystems dengan cara ini, saya akan sering pertama dd if=/dev/zero of=/thefs/zero.dat bs=64k && sync && rm /thefs/zero.dat && umount /thefs
ke nol sebagian besar ruang yang tidak digunakan, yang mempercepat xfer.