scp - пропустить файл во время работы

8

Я запускаю scp и копирую папку с удаленного сервера, я запускаю с -rl, поэтому я вижу, что файлы копируются, можно ли каким-то образом пропустить текущий файл?

Чен Кинрот
источник

Ответы:

11

Нет, ты не можешь. Но вы можете остановиться scpи использовать rsyncвместо этого. Он будет копировать только те различия, которые остались от частичной копии, и вы можете исключить любые файлы или каталоги, которые вы не хотите передавать.

rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
forcefsck
источник
2
Да, это полезно, но, к сожалению, не отвечает на заданный вопрос.
Эммали Уилсон
8
Это прекрасно отвечает на вопрос; вопрос спрашивает, возможно ли что-то сделать, и этот ответ отвечает «нет». Затем он предоставляет полезную альтернативу по теме.
Кристофер Шроба
1

Нет, не с -rлюбым другим синтаксисом, который выполняет несколько передач файлов в рамках одной scpкоманды.

При этом scpтакже следует парадигме UNIX: пишите программы, которые предоставляют простые и точные функциональные возможности, которые могут быть объединены интересными способами. Это означает, что можно было бы написать цикл, который в интерактивном режиме выполняет отдельные вызовы команды, по одному на файл. После этого вы сможете выйти из отдельных команд во время их выполнения. (Ctrl-C)

Код для этого предоставляется читателю как упражнение, но необходимо подчеркнуть необходимость выполнения этого цикла в интерактивной оболочке. Выход из неинтерактивной оболочки завершит всю работу.

Андрей Б
источник
0

Да, ты можешь!

Давайте перечислим удаленный каталог и скопируем каждый файл отдельно. Затем нажмите Ctrl-C для каждого файла, который вы не хотите копировать:

OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
  do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"

OLD_IFS здесь для обработки файлов с пробелами в них.

Сильвен
источник
Куда ты это положил? Как вы это называете?
StatsSorceress