Rsync dua jenis file dalam satu perintah?

13

Bagaimana cara menuliskannya dalam satu baris, juga tanpa mengulangi jalur yang sama?

rsync -a root@somewhere:/folder/remote/*.txt .
rsync -a root@somewhere:/folder/remote/*.jpg .
Cheng
sumber

Jawaban:

18

Saya akan menulis seperti ini:

rsync -a root@somewhere:/folder/remote/*.{txt,jpg} .
Gert
sumber
7
Ini adalah teknik umum yang dapat Anda gunakan dengan perintah apa pun. Shell akan mengulangi argumennya, menggantikan ekspresi brace dengan setiap item dalam daftar. Ini disebut brace expantion
Shawn J. Goff
11
rsync -a --include='*.txt' --include='*.jpg' --exclude='*' root@somewhere:/folder/remote/ .

(Perhatikan bahwa final /dalam /folder/remote/, dan penempatan --exclude='*'setelah aturan include, adalah penting.) Dalam shell yang mendukung ekspansi brace (mis. Bash, ksh, zsh):

rsync -a --include='*.'{txt,jpg} --exclude='*' root@somewhere:/folder/remote/ .

Tambahkan --include='*/' --prune-empty-dirsjika Anda ingin menyalin file dalam subdirektori juga.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
rsync 3 * tampaknya gagal pada * wildcard, termasuk | exclude berfungsi dengan baik.
briankip