Как сделать scp-файлы размером менее x?

10

Я что-то развиваю на своем ноутбуке и просматриваю файлы на высокопроизводительный ПК (сервер без монитора). Из лени я просто делаю это сейчас (на ноутбуке):

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

Однако некоторые файлы в каталоге проекта представляют собой некоторые файлы журналов и файлы, которые мне не нужно отправлять, что иногда может быть одним из концертов. Я бы хотел, чтобы это была чистая команда, которая в основном делает то же самое (передает все файлы в проекте и его подкаталоги), но только отправляет файлы под определенным порогом размера файла, например, 100 мб. Я только слегка опыт с bash и вовсе не с regexp, поэтому я действительно не знаю, как это сделать без некоторого запутанного метода, такого как импорт sys в python и использование кучи ifs и сравнению.

    
задан iammax 13.07.2017 в 16:29
источник

1 ответ

26

вы можете использовать команду «rsync», которая имеет возможность контролировать размер файла, подлежащего исключению.

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

from ' человек 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/

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

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;
    
ответ дан αғsнιη 13.07.2017 в 16:54
источник