6

Можно ли заставить SCP фильтровать файлы, которые он копирует по дате, например, если вы хотите скопировать все файлы, созданные 12/29, и игнорировать другие?

2 ответа2

5

Вы не можете сделать это напрямую с scp . Способ Unix состоит в том, чтобы объединить инструменты, вам нужна команда find .

Вот пример поиска файла с заданной датой:

touch --date "2007-01-01" start
touch --date "2008-01-01" end
find -type f -newer start -not -newer end

Я взял этот пример отсюда: http://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/

Чтобы вставить это в scp, вы можете сделать это:

find -type f -newer start -not -newer end -exec scp {} dest: \;

Это вызовет scp один раз для каждого файла, что может быть медленным, потому что ему нужно каждый раз устанавливать соединение. Если у вас есть только несколько файлов и в именах нет пробелов, вы можете сделать это:

scp `find -type f -newer start -not -newer end` dest:
0

Эффективный (в одну строку!) здесь дается альтернатива (@sudodus), которая копирует через канал SSH, используя 'cpio' в режиме копирования. Вы можете настроить аргументы поиска так, как вам нужно, возможно, используя тесты время / мин / новее.

Чтобы получить точный тест даты и времени, создайте фиктивный файл с правильными временем и датой в исходной системе, используйте тест find -newer или тест man-страницы -newerXY. Смотрите https://linux.die.net/man/1/find

Выходные данные команды find, выполняемой в удаленной системе, безопасно передаются обратно в локальную систему через ssh и сохраняются.

Похоже, что он делает все, что вам нужно, но не использует «scp», что может повлиять на вашу маркировку. Но он использует комбинацию инструментов Unix - это подход Unix!

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

ssh username@ip-adress '(cd /path/to/sourcedir; find . -print | cpio -oBav -Hcrc)' | ( cd /path/to/targetdir && cpio -ivumd )

https://askubuntu.com/questions/1080590/how-to-use-find-in-scp-command

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .