Як сканувати файли розміром менше x?


13

Я щось розробляю на своєму ноутбуці і сканую файли на високопродуктивний ПК (сервер без монітора). З ліні я зараз це роблю (на ноутбуці):

scp -r ~/project/* server:~/project/

Однак деякі з файлів у каталозі проектів - це деякі файли журналів і файли, які мені не потрібно надсилати, що іноді може бути гігом або близько того. Мені б хотілося, що це хороша чиста команда, яка в основному робить те саме (передає всі файли в проекті та його підкаталогах), але лише надсилає файли під певним порогом розміру файлів, таким як 100 mb. Я лише м'яко досвідчений з bash, і зовсім не з regexp, тому я насправді не маю уявлення, як це зробити без якогось зведеного методу, наприклад, імпорту sys в python та використання купок ifs та порівнянь.

Відповіді:


27

ви можете скористатися командою 'rsync', яка має можливість контролювати розмір файлу, який виключається.

rsync -rv --max-size=100m /path/in/local/ server:~/project/

від ' man rsync ',

--max-size=SIZE    don't transfer any file larger than SIZE

Оновлена ​​відповідь : просто виключіть файли журналу за допомогою параметра "rsync" --exclude, як показано нижче

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

або ви можете скористатися комбінацією команд 'знайти' із 'scp' і вказати обмеження розміру файлу з його -sizeопцією. використовувати ! -name '*.log'для виключення певних файлів, що закінчуються на 'log'.

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;

1
Примітка для ОП: rsyncсхожа на scp, але ефективніша, оскільки вона передає зміни лише в тому випадку, якщо файл змінено.
Падді Ландау

будьте обережні з порядком каталогів якrsync -rv --max-size SOURCE DESTINATION. Я не читав належним чином, і цей куд має дуже погані наслідки.
toto_tico
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.