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)
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)
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.
rsync -au /local/directory/ host:/remote/directory/
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
(Perhatikan /
pada sisi sumber: tanpa itu rsync
akan membuat /remote/directory/directory
.)
--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).
scp -r user@server.com:/location/of/files/* /local/location/
Anda hanya dapat menyalin file baru berdasarkan tanggal. Menggunakanfind
scp `find /data/*.gz -type f -mtime +7` USER@SERVER:/backup/
Jika Anda dapat membuat konten file tujuan hanya-baca:
find . -type f -exec chmod a-w '{}' \;
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).
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 (seperti csync
) 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 luncurkan rsync
sebagai daemon di sini.
Dalam kasus saya - saya tidak bisa melakukan ini dan solusinya adalah: lftp . lftp
Penggunaan untuk sinkronisasi di bawah ini:
lftp -c "open -u login,password sftp://sft.domain.tld/; \
mirror -c --verbose=9 -e -R -L /srs/folder /rem/folder"
/src/folder
- adalah folder di PC saya, /rem/folder
- is sftp://sft.domain.tld/rem/folder
.
Anda dapat menemukan halaman manual melalui tautan: http://lftp.yar.ru/lftp-man.html
Untuk menyalin sejumlah besar file, lebih cepat untuk menaruhnya. Dengan menggunakan -k Anda juga mencegah tar dari menimpa file saat membukanya di sistem target.
tar -c <source-dir> | ssh <name>@<host> 'tar -kxzf - -C <target-dir>'
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
mkdir original_files ; cp -r * original_files/
Salin semuanya menggunakan scp
scp -r user@server:dir/* ./
Salin file asli di atas apa pun scp telah ditulis:
cp -r original_files/* ./
Cara lain untuk mencapai ini adalah dengan melakukan ls
pada folder tujuan:
Di folder tujuan jarak jauh:
ls | awk '{print "mv " $1 " ../copied_data/"}' > mv_copied_data
scp mv_copied_data user@source.server.com:/path/to/source/folder
Sumber:
cd /path/to/source/folder
chmod 777 mv_copied_data
./mv_copied_data
Di tempat tujuan:
scp -r user@source.server.com:/path/to/source/folder /path/to/destination/foldeer
-
>
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.