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 .

Jawaban:


18

Saya akan menulis seperti ini:

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

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.


rsync 3 * tampaknya gagal pada * wildcard, termasuk | exclude berfungsi dengan baik.
— briankip
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.