Użyj rsync, aby skopiować wszystkie pliki z wyjątkiem niektórych nazw plików z pewnym rozszerzeniem


28

Mam dwie karty flash tego samego rozmiaru i chcę skopiować zawartość jednej do drugiej na podstawie następujących zasad:

  1. Chcę mieć wszystkie katalogi i podkatalogi na swoim miejscu
  2. Chcę wykluczyć pliki typu .FOO, .BAR i .ZIM (wszystkie inne pliki są kopiowane)
  3. Bonus: Byłoby fajnie, gdyby wyświetlał nazwy plików podczas ich kopiowania, biorąc pod uwagę, że kopiuje ~ 8 GB informacji

Czy można to jakoś zrobić z „znajdź”?

Odpowiedzi:


41

Byłoby to znacznie łatwiejsze przy użyciu rsync z jego --excludeprzełącznikiem.

rsync -av --exclude='*.FOO' --exclude='*.BAR' --exclude='*.ZIM' /source /dest

-vPrzełącznik zapewni wyjście opisowy, w którym pliki są zsynchronizowane.


Trochę tu kontynuacji: kopia została zakończona, a / src / * jest teraz w / dest / src / * Jak użyć rsync, aby uzyskać / src / * w / dest / *?
Macek

Spróbuj/source/ /dest
John T

To nie działa Nadal widzę, że pliki * .FOO są kopiowane.
Jake

Określono, jak należy podać ścieżkę --exclude. Jeśli masz z tym problemy, sprawdź tę odpowiedź .
totymedli

0

Jeśli masz dużą liczbę rozszerzeń do wykluczenia, możesz utworzyć plik i zapisać całe rozszerzenie lub plik, aby wykluczyć, i użyć tylko jednej opcji wykluczenia, aby uprościć.

rsync -ravz --exclude = '. / abc, txt' / source / dest

Zawsze dobrze jest użyć opcji z do kompresji i opcji r, jeśli trzeba kopiować rekurencyjnie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.