Bagaimana cara menyalin seluruh direktori ke direktori dengan nama yang sama tanpa mengganti konten di direktori tujuan? (sebagai gantinya, saya ingin menambahkan konten folder tujuan)
ssh
rsync
scp
synchronization
Daniel Böhmer
sumber
sumber
Jawaban:
Gunakan
rsync
, dan sampaikan-u
jika Anda hanya ingin memperbarui file yang lebih baru di direktori asli, atau--ignore-existing
untuk melewati semua file yang sudah ada di tujuan.(Perhatikan
/
pada sisi sumber: tanpa itursync
akan membuat/remote/directory/directory
.)sumber
--ignore-existing
tidak menambahkan tanpa mengganti, kehilangan data apa yang Anda lihat?rsync
dengan mudah tersedia .... (Seperti Win32-OpenSSH)--rsync-path
diperlukan)scp akan menimpa file jika Anda memiliki izin tertulis untuknya.
Dengan kata lain: Anda dapat
scp
secara efektif melewati file-file tersebut dengan menghapus sementara waktu izin menulis padanya (jika Anda adalah pemilik file, itu adalah).sumber
scp -r [email protected]:/location/of/files/* /local/location/
Anda hanya dapat menyalin file baru berdasarkan tanggal. Menggunakan
find
sumber
Jika Anda dapat membuat konten file tujuan hanya-baca:
sebelum dijalankan
scp
(itu akan mengeluh dan melewatkan file yang ada).Dan mengubahnya kembali sesudahnya (
chmod +w
untuk mendapatkan nilai berbasis umask). Jika semua file tidak memiliki izin menulis sesuai dengan umask Anda, Anda harus menyimpan izin tersebut sehingga Anda dapat memulihkannya.(Jawaban Gilles menimpa file yang ada jika secara lokal file tersebut lebih baru, saya kehilangan data berharga seperti itu. Tidak mengerti mengapa jawaban yang salah dan berbahaya memiliki begitu banyak suara).
sumber
rsync --ignore-existing
menyebabkan Anda kehilangan data?find: missing argument to '-exec'
menggunakan perintah ini, dan sebagai gantinya harus menggunakan:find . -type f -exec chmod a-w {} \;
. Linux saya jelek, ymmv.find . -type f -exec chmod a-w {} \;
Aku punya tugas yang sama, dalam kasus saya saya tidak bisa menggunakan
rsync
,csync
atau FUSE karena penyimpanan saya hanya memiliki SFTP.rsync
tidak dapat mengubah tanggal dan waktu untuk file, beberapa utilitas lain (seperticsync
) menunjukkan kepada saya kesalahan lain: " Tidak dapat membuat file temporer Skew Jam terdeteksi ".Jika Anda memiliki akses ke server penyimpanan - cukup instal
openssh-server
atau luncurkanrsync
sebagai daemon di sini.Dalam kasus saya - saya tidak bisa melakukan ini dan solusinya adalah: lftp .
lftp
Penggunaan untuk sinkronisasi di bawah ini:/src/folder
- adalah folder di PC saya,/rem/folder
- issftp://sft.domain.tld/rem/folder
.Anda dapat menemukan halaman manual melalui tautan: http://lftp.yar.ru/lftp-man.html
sumber
Untuk menyalin sejumlah besar file, lebih cepat untuk menaruhnya. Dengan menggunakan -k Anda juga mencegah tar dari menimpa file saat membukanya di sistem target.
sumber
scp
tidak menimpa file dan tidak ada saklar untuk menghentikannya, tetapi Anda dapat menyalin semuanya, melakukan scp dan kemudian menyalin kembali file yang ada. Contoh:Salin semua file yang ada
Salin semuanya menggunakan scp
Salin file asli di atas apa pun scp telah ditulis:
sumber
Cara lain untuk mencapai ini adalah dengan melakukan
ls
pada folder tujuan:Di folder tujuan jarak jauh:
Sumber:
Di tempat tujuan:
sumber
-
>
spasi baris baru atau karakter khusus lainnya. 3. Hard-code for-loop dalam skrip python. Membuat program saat runtime sulit dan rumit (bahkan ketika dilakukan oleh programmer profesional), untuk banyak alasan. Membuat skrip shell bahkan lebih buruk - ide yang buruk.