Bagaimana saya bisa menyalin subset file dari direktori sambil menjaga struktur folder?

8

Saya ingin memindahkan beberapa subset file dari dirA ke dirB (misalkan file dengan "bla" dalam nama file), tetapi saya ingin semua direktori yang disarangkan sama di lokasi baru. Bagaimana saya bisa melakukan itu?

cstack
sumber
kemungkinan duplikat filter Rsync: menyalin satu pola saja
Gilles 'SO- stop being evil'

Jawaban:

9

Keajaiban rsyncaturan filter:

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

Konsultasikan rsynchalaman manual untuk perincian tentang aturan filter, tapi ini versi kental untuk kebutuhan khusus ini.

--filter="+ */" berarti "termasuk semua yang merupakan direktori"

--filter="-! *blah* berarti "kecualikan semua yang TIDAK termasuk bla dalam nama file"

pdo
sumber
3

Jika Anda perlu menyalin file-file ini, cp akan melakukannya:

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

Opsi --parentsmempertahankan subdir - ini menciptakan jalur direktori lengkap untuk tujuan.

Joanna Kotuła
sumber
sintaks di sini jauh lebih jelas daripada rsync
Matěj Šmíd
0

Ini bekerja untuk saya:

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/

The -emendefinisikan beralih rsyncmentransfer protokol dengan pelabuhan sebagai -p 22. Juga, /garis miring trailing penting untuk membuat program tahu itu berurusan dengan direktori.

Terima kasih @pdo atas waktu ekstra di hari kerja saya!

Kambiz
sumber