Поиск по сайту:

Как рекурсивно копировать каталоги с помощью scp


Распространенной проблемой при работе с файлами является рекурсивное применение операций или к каждому подкаталогу во всей папке. Утилита scp используется для передачи файлов и каталогов на удаленные серверы и поддерживает рекурсивные операции.

Запуск scp рекурсивно

Хотя иногда большие передачи выполняются быстрее в одном архиве, известном как tarball, в большинстве случаев накладные расходы на передачу отдельных файлов не имеют значения.

Рекурсивное копирование с помощью scp просто: просто используйте флаг -r в дополнение ко всему, что вы добавили:

scp -r localpath user@remote:/remotepath

Обратите внимание, что это явно нижний регистр -r, в отличие от многих других команд, которые используют или требуют -R.

Это будет действовать как перетаскивание в /remotepath/, копирование содержимого localpath/ на удаленное устройство и помещение его в /remotepath/localpath/.

Если вы хотите вместо этого синхронизировать localpath/ и /remotepath/, вам придется перенести папку в родительскую папку /remotepath/, назначение. В данном случае это будет /, корневой каталог.

Это также будет следовать символическим ссылкам в локальном пути при разрешении файлов, но не обязательно будет создавать те же самые ссылки на удаленном сервере. Например, при копировании нового файла в /etc/nginx/sites-enabled и обратно он не будет автоматически помещен в /etc/nginx/sites-available на удаленном компьютере. .

Вместо этого используйте rsync

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

rsync работает в основном так же, как scp, с несколькими дополнительными параметрами для указания настроек:

rsync -a -essh localpath/ user@remote:/remotepath/

Флаг -a задает режим архивации, который одновременно включает множество часто используемых параметров. Флаг -e ssh настраивает rsync для передачи по SSH.