Saya mencoba agar opsi --file-from rsync berfungsi, tetapi tidak bisa. Intinya, saya ingin memindai dengan find terlebih dahulu dan kemudian membuat file dari outputnya. Lalu saya ingin rsync membaca file itu dengan file-from dan hanya mengirim apa yang ditentukan dalam file. Tapi itu tidak melakukan itu, itu mengirimkan segalanya. Contoh: rsync -r -i --files-from=<(find thisdir/ -not -path 'parent4' -not -path "parent5") ./ root@10.125 .126.115:/root/

'thisdir' ada di direktori kerja saat ini. Rsync seharusnya tidak mengirim apa pun yang bersarang di bawah subdirektori 'parent4' dan 'parent5'. Tapi:

cd+++++++++ thisdir/parent5/
<f+++++++++ thisdir/parent5/thisfile
cd+++++++++ thisdir/parent5/subdira/
cd+++++++++ thisdir/parent5/subdirb/
cd+++++++++ thisdir/parent5/subdirc/
cd+++++++++ thisdir/parent5/subdird/

Itu tidak.

Apa yang saya salah paham?

0
Daniel 9 April 2020, 16:20

1 menjawab

Jawaban Terbaik

Jangan gunakan -r karena ini akan berulang untuk setiap item yang ditemukan.

Selain itu, find thisdir/ -not -path parent4 tidak akan berfungsi karena pola glob jalur harus lengkap, jadi Anda memerlukan misalnya -not -path '*/parent4/*'. Ini cocok (dan mengecualikan) semua yang ada di bawah direktori, tetapi Anda juga perlu -not -path '*/parent4' untuk mengecualikan direktori saja.

Biasanya, untuk melakukan pengecualian semacam ini, seseorang dapat menggunakan -prune untuk berhenti menemukan penurunan lebih jauh. Misalnya:

find thisdir/ '(' -path '*'/parent4 -o -path '*'/parent5 \) -prune -o -print
0
meuh 9 April 2020, 19:05