Saya memiliki sekitar 50 atau lebih file dalam berbagai sub-direktori yang ingin saya masukkan ke server jauh. Saya pikir rsync akan dapat melakukan ini untuk saya menggunakan opsi --include-from. Tanpa opsi --exclude = "*", semua file dalam direktori sedang diselaraskan, dengan opsi tersebut, tidak ada file.
rsync -avP -e ssh --include-from=deploy/rsync_include.txt --exclude=* ./ [email protected]:/var/www/ --dry-run
Saya menjalankannya sebagai kering pada awalnya dan 0.0.0.0 jelas diganti dengan IP dari server jarak jauh. Isi rsync_include.txt adalah baris baru yang dipisahkan dari daftar jalur relatif ke file yang ingin saya unggah.
Adakah cara yang lebih baik untuk melakukan ini dengan melarikan diri dari saya pada Senin pagi?
rsync --files-from
ini mungkin merupakan solusi yang lebih mudah dan lebih dapat diandalkan :)Ada bendera
--files-from
yang melakukan apa yang Anda inginkan. Dariman rsync
:sumber
rsync -av --files-from=file-list . target/
untuk menyalin file dari direktori saat ini.The filenames that are read from the FILE are all relative to the source dir
...
rsync tampaknya mengabaikan..
memberi saya kesalahan sepertirsync: link_stat "/home/michael/test/subdir/test.txt" failed: No such file or directory
(dalam hal ini menjalankan dari "test" dir dan mencoba untuk menentukan "../subdir/test.txt" yang memang ada.--files-from
argumen digabungkan dengan daftar eksplisit yang disertakan dan dikecualikan, dan akankah file dari daftar ditambahkan dengan--files-from
menimpa aturan pengecualian yang ada, sehingga akan disertakan jika muncul di file?--files-from=
parameter perlu garis miring jika Anda ingin jalur absolut tetap utuh. Jadi perintah Anda akan menjadi seperti di bawah ini:Ini bisa dilakukan seperti ada banyak file dan Anda ingin menyalin semua file ke x path. Jadi Anda akan menemukan file dan membuang output ke file seperti di bawah ini:
sumber
Sebagai catatan, tidak ada jawaban di atas yang membantu kecuali satu. Untuk meringkas, Anda dapat melakukan operasi pencadangan
--files-from=
dengan menggunakan:ATAU
Perintah sebelumnya sudah cukup jelas, di samping konten file
rsync-src-files
yang akan saya uraikan di bawah. Sekarang, jika Anda ingin menggunakan versi terakhir, Anda perlu mengingat empat komentar berikut:--files-from
dan direktori sumber--recursive
.rsync-src-files
adalah file yang dibuat oleh pengguna dan ditempatkan dalam direktori src untuk pengujian inirsyn-src-files
berisi file dan folder untuk menyalin dan mereka dibawa relatif ke direktori source. PENTING: Pastikan tidak ada spasi atau baris kosong di file. Pada contoh di bawah, hanya ada dua garis, bukan tiga (Gambarkan secara kebetulan). Isi darirsynch-src-files
adalah:folderName1
folderName2
sumber
Saya mendapat tugas serupa: untuk rsync semua file diubah setelah tanggal tertentu, tetapi tidak termasuk beberapa direktori. Sulit untuk membuat gaya satu liner all-in-one, jadi saya menyelami masalah menjadi bagian-bagian yang lebih kecil. Solusi akhir:
Pertama saya gunakan
find -L ~/sourceDIR -type f -newermt "DD MMM YYYY HH:MM:SS"
. Saya mencoba menambahkanregex
kefind
baris untuk mengecualikan pola nama, namun rasa Linux (Mint) saya tidak mengerti meniadakan regex difind
. Mencoba jumlah rasa regex - tidak berfungsi seperti yang diinginkan. Jadi saya berakhir denganegrep -v
- opsi yang mengecualikan pola dengan cara mudah. Sayarsync
tidak menyalin direktori seperti /.cache atau /.config ditambah beberapa saya lainnya secara eksplisit bernama.sumber
bash
satu baris:rsync -v --files-from=<(find ~/sourceDIR -type f -newermt "DD MMM YYYY HH:MM:SS" | grep -Ev "/\..|Downloads|FOO") ~/sourceDIR /Destination
Sintaksis:
rsync <file_/_folder_list> <source> <target>
Nama folder (di sini, DENGAN tambahan
/
; misalnyaCancer - Evolution/
) ada dalam file daftar folder (misalnya: cm_folder_list_test):Jika Anda tidak menyertakan trailing tersebut
/
, folder target rsync akan dibuat, tetapi kosong.Nama folder tersebut ditambahkan ke path lainnya (
/home/victoria/Mail/2_RESEARCH - NEWS
), sehingga menyediakan path folder lengkap ke rsync; mis/home/victoria/Mail/2_RESEARCH - NEWS/Cancer - Evolution/
. : .Perhatikan bahwa Anda juga perlu menggunakan
--files-from=
..., BUKAN--include-from=
...rsync -aqP --delete --files-from=/mnt/Vancouver/projects/ie/claws/data/cm_folder_list_test "/home/victoria/Mail/2_RESEARCH - NEWS" $IN/
(Dalam skrip BASH saya, saya mendefinisikan variabel
$IN
sebagai berikut.)opsi rsync digunakan:
sumber
Jawaban ini bukanlah jawaban langsung untuk pertanyaan tersebut. Tetapi itu akan membantu Anda menemukan solusi mana yang paling cocok untuk masalah Anda.
Saat menganalisis masalah, Anda harus mengaktifkan opsi debug
-vv
Kemudian rsync akan menampilkan file mana yang disertakan atau dikecualikan dengan pola mana:
sumber
Tak satu pun dari jawaban ini berhasil untuk saya, ketika yang saya miliki hanyalah daftar direktori . Kemudian saya menemukan solusinya! Anda harus menambahkan
-r
ke--files-from
karena-a
tidak akan rekursif dalam skenario ini (yang tahu ?!).sumber