Saya pernah mengalami hal ini rsync
di masa lalu. Solusi yang memperbaikinya bagi saya adalah menjalankannya dari dalam screen
sesi, yang dapat membantu menjaga koneksi ke server jarak jauh.
screen -LS rsync
[execute your rsync command]
Ctrl-A+D to detach from the session
Anda dapat memeriksa status dengan menjalankan screen -x rsync
(atau apa pun yang Anda memutuskan untuk memberi nama sesi jika Anda memberinya nama, yang tidak diperlukan). Ini akan melampirkan kembali shell Anda saat ini untuk sesi itu. Ingatlah untuk melepaskannya lagi setelah Anda memeriksa statusnya agar tetap berjalan di latar belakang.
Anda juga dapat menjalankan perintah untuk dijalankan melalui screen
di latar belakang dalam satu kali gagal dengan melakukan [seseorang tolong perbaiki saya jika saya salah] screen -dm 'command'
. Anda mungkin ingin man screen
sebelum mencoba yang terakhir.
EDIT:
Saya mengedit jawaban saya karena Anda telah mengkonfirmasi bahwa screen
tidak memberikan bantuan dalam skenario ini, tetapi Anda menjawab komentar saya menyarankan untuk mencoba scp
dan melihat hasil seperti apa yang Anda dapatkan, yang Anda jawab dengan aneh, itu bekerja dengan baik.
Jadi jawaban baru saya adalah ini: gunakan scp
- atau ssh
(dengan tar
) - bukanrsync
Memang, scp
tidak mendukung sejumlah besar fitur seperti rsync
, tetapi Anda akan benar-benar terkejut untuk menemukan betapa banyak fitur yang tidak support yang hampir identik dengan yang rsync
.
Skenario dunia nyata untuk scp
dan alternatif lain untuk rsync
:
Beberapa waktu yang lalu, saya ditugaskan untuk membuat skrip shell yang akan menarik log dari server produksi kami dan menyimpannya secara lokal di server web sehingga pengembang dapat mengaksesnya untuk tujuan pemecahan masalah. Setelah gagal mencoba membuat tim Unix menginstal rsync
di server kami, saya menemukan solusi scp
yang bekerja dengan baik.
Yang sedang berkata, saya baru-baru ini memodifikasi skrip sehingga semua yang digunakan adalah ssh
dan tar
- GNU tar
/ gtar
, tepatnya. GNU tar
mendukung banyak opsi yang benar-benar akan Anda temukan rsync
, seperti --include
,, --exclude
pelestarian izin / atribut, kompresi, dll.
Cara saya sekarang menyelesaikan ini adalah dengan ssh
-ing ke server jauh (melalui pubkey auth) dan menggunakan gtar -czf - [other options such as --include='*.log' and --exclude='*core*', etc.]
- ini menulis semua info stdout
, yang kemudian disalurkan [secara lokal] ke tar -xzf
sehingga tidak ada perubahan yang dibuat pada server produksi jarak jauh , dan semua file ditarik apa adanya ke server lokal. Ini merupakan alternatif yang bagus untuk rsync
kasus ini. Satu-satunya hal penting yang tidak didukung tar
maupun tidak scp
adalah cadangan inkremental dan tingkat kesalahan blok-tingkat memeriksa rsync
fitur itu.
Perintah lengkap yang saya maksudkan ketika menggunakan ssh
dan tar
akan menjadi seperti ini (remote adalah Solaris 10; lokal adalah Debian, untuk apa nilainya):
cd /var/www/remotelogs
ssh -C user@remotehost "cd /path/to/remote/app.directories; gtar -czf - --include='*.log' --exclude='*.pid' --exlude='*core*' *" | tar -xz
Dalam skenario Anda, itu akan menjadi sebaliknya - tar -cf -
secara lokal, dan pipa ke server jauh melalui ssh user@remotehost "tar -xf -"
- ada jawaban lain yang merujuk jenis perilaku ini tetapi tidak masuk ke detail sebanyak mungkin.
Ada beberapa opsi lain yang telah saya sertakan untuk mempercepat. Saya mengatur waktu semuanya tanpa henti untuk mendapatkan waktu eksekusi serendah mungkin. Anda akan berpikir bahwa menggunakan kompresi dengan tar
tidak ada gunanya, tetapi sebenarnya mempercepat segalanya, seperti halnya menggunakan -C
flag dengan ssh
untuk mengaktifkan ssh
kompresi juga. Saya dapat memperbarui posting ini di kemudian hari untuk memasukkan perintah persis yang saya gunakan (yang sangat mirip dengan apa yang saya posting), tetapi saya tidak merasa ingin mendapatkan VPN saat ini karena saya sedang berlibur minggu ini.
Pada Solaris 10, saya juga menggunakan -c blowfish
, karena ini adalah cipher tercepat untuk mengotentikasi dan juga membantu mempercepat, tetapi Solaris 11 kami tidak mendukungnya atau menonaktifkan cipher suite ini.
Selain itu, jika Anda memilih untuk menggunakan opsi ssh
/ tar
, sebenarnya akan menjadi ide yang baik untuk mengimplementasikan solusi asli saya menggunakan screen
jika Anda melakukan pencadangan yang akan memakan waktu. Jika tidak, pastikan pengaturan keepalive / timeout Anda di ssh_config
-tweak tepat, atau metode ini juga akan sangat mungkin menyebabkan pipa rusak.
Bahkan jika Anda ikut scp
, saya selalu menganggapnya sebagai praktik terbaik untuk digunakan screen
atau tmux
ketika melakukan operasi semacam ini, untuk berjaga-jaga . Sering kali saya tidak mengikuti saran saya sendiri dan gagal melakukan ini, tetapi memang merupakan praktik yang baik untuk menggunakan salah satu alat ini untuk memastikan bahwa pekerjaan jarak jauh tidak kacau karena sesi shell aktif Anda terputus entah bagaimana.
Saya tahu Anda ingin mengetahui akar penyebab rsync
masalah Anda . Namun, jika ini benar-benar penting, ini adalah dua solusi hebat yang dapat Anda coba untuk sementara waktu.
kerberos
untuk mengotentikasi pada server jauh.