Використовуйте rsync, щоб скопіювати всі файли, крім певних імен файлів з певним розширенням


28

У мене є дві флеш-карти однакового розміру, і я хочу копіювати вміст однієї в іншу, виходячи з таких правил:

  1. Я хочу, щоб усі каталоги та підкаталоги були на місці
  2. Я хочу виключити файли типу .FOO, .BAR і .ZIM (всі інші файли скопійовані)
  3. Бонус: Було б здорово, якщо він виводить імена файлів у міру їх копіювання, вважаючи, що це буде копіювання ~ 8 ГБ інформації

Чи можна це якось зробити за допомогою "знайти"?

Відповіді:


41

Це було б значно простіше за допомогою rsync з його --excludeперемикачем.

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

-vКомутатор забезпечить докладний висновок , на якому синхронізуються файли.


Невелике подання тут: копія закінчена і / src / * тепер знаходиться в / dest / src / * Як використовувати rsync для отримання / src / * in / dest / *?
macek

Спробуйте/source/ /dest
John T

Це не працює. Я все ще бачу * копіювання файлів .OO.
Джейк

Вказано, як слід дати шлях --exclude. Якщо у вас проблеми з цим, перегляньте цю відповідь .
totymedli

0

Якщо у вас є велика кількість розширень для виключення, ви можете створити файл і записати все розширення або файл, щоб виключити і використовувати лише один варіант виключення, щоб зробити його простішим.

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

Завжди добре використовувати z для компресії та параметр r, якщо вам доведеться копіювати рекурсивно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.