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.