Я запускаю scp и копирую папку с удаленного сервера, я запускаю с -rl, поэтому я вижу, что файлы копируются, можно ли каким-то образом пропустить текущий файл?
8
Нет, ты не можешь. Но вы можете остановиться scp
и использовать rsync
вместо этого. Он будет копировать только те различия, которые остались от частичной копии, и вы можете исключить любые файлы или каталоги, которые вы не хотите передавать.
rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
Нет, не с
-r
любым другим синтаксисом, который выполняет несколько передач файлов в рамках однойscp
команды.При этом
scp
также следует парадигме UNIX: пишите программы, которые предоставляют простые и точные функциональные возможности, которые могут быть объединены интересными способами. Это означает, что можно было бы написать цикл, который в интерактивном режиме выполняет отдельные вызовы команды, по одному на файл. После этого вы сможете выйти из отдельных команд во время их выполнения. (Ctrl-C)Код для этого предоставляется читателю как упражнение, но необходимо подчеркнуть необходимость выполнения этого цикла в интерактивной оболочке. Выход из неинтерактивной оболочки завершит всю работу.
источник
Да, ты можешь!
Давайте перечислим удаленный каталог и скопируем каждый файл отдельно. Затем нажмите Ctrl-C для каждого файла, который вы не хотите копировать:
OLD_IFS здесь для обработки файлов с пробелами в них.
источник