Linux

Может ли scp рекурсивно копировать каталоги?

В настоящее время я могу скопировать только один .tar файл. Но как я могу рекурсивно копировать каталоги с помощью scp?

Ответ 1

Используйте -r:

scp -rp sourcedirectory user@dest:/path

 

  • -r означает рекурсивный

  • -p сохраняет время модификации, время доступа и режимы из исходного файла.

 

Примечание: команда создает каталог sourcedirectory внутри /path, поэтому файлы будут находиться в /path/sourcedirectory.

 

Ответ 2

Хотя предыдущий ответ технически верный, все же следует рассмотреть возможность использования rsync. rsync сравнивает данные на отправляющей и получающей сторонах, с помощью механизма различий, поэтому ему не нужно повторно отправлять данные, которые уже были отправлены ранее.

Если вы собираетесь копировать что-то на удаленную машину более одного раза, используйте rsync. На самом деле, лучше использовать rsync каждый раз, потому что он имеет больше возможностей для управления такими вещами, как копирование разрешений и прав владельца на файлы. Исключает определенные файлы или каталоги. В общем: 

$ rsync -av /local/dir/ server:/remote/dir/

 

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

Кроме того, в отличие от scp, rsync позволяет легко восстанавливать прерванную передачу.

Наконец, современные версии rsync по умолчанию работают по ssh, поэтому если scp уже работает, rsync будет вполне подходящей заменой.

 

Ответ 3

Параметр рекурсивного копирования '-r' (нижний регистр)

scp –r

 

Часто путают с опцией обычного локального рекурсивного копирования '-R' (верхний регистр)

cp -R

 

Ответ 4

Лучший способ - использовать rsync через SSH

rsync -a -essh /source/ user@dest-server:/dest/

rsync -a -essh user@source-server:/source/ /dest/

 

Мои любимые варианты: -Pazvessh --delete:

  • -a: режим архива (включает множество стандартных параметров по умолчанию, включая сохранение символических ссылок)

  • -z: сжать

  • -v: verbose: показать файлы

  • -P: показать процесс выполнения файлов/оставшихся файлов

  • -e ssh: сделать rsync в протоколе ssh

  • --delete: удалять исходные файлы

Ответ 5

После поиска флага рекурсивного копирования и успешного его использования благодаря этому сообщению я хотел бы опубликовать просто предложение.

Если вы копируете (рекурсивно) каталог, файлы могут быть отправлены в сжатом виде и вы сможете сэкономить время при передаче  В итоге я сделал следующее:

local$ tar -czvf local.tar.gz directory/

local$ scp local.tar.gz user@remote:/directory

ssh user@remote

remote$ tar -xzvf local.tar.gz

 

Ответ 6

Вы можете рекурсивно скопировать каталог в сжатый архив с помощью этой простой команды:

ssh -p 22 user@address-to-copy-from.com  'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz

 

Например, чтобы скопировать содержимое /var/log из domain.com в ~/logs.tgz:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' > ~/logs.tgz

 

Вы также можете извлечь файлы в целевой системе с помощью каналов. Эта команда скопирует содержимое /var/log  из domain.com в  ~/destination/log:

ssh -p 22 user@domain.com  'cd /var && tar zcvf - log' | tar xzf - -C ~/destination

 

Хотя для зеркалирования каталога вам, вероятно, следует использовать rsync...

 

Ответ 7

Если вы предпочитаете передавать пароль пользователя в качестве параметра, а не вводить его в интерактивном режиме, вы можете использовать sshpass( sudo apt-get install -y sshpass).

Пример:

sshpass -p 'remote_password' scp -rp /src/folder

myremoteusername@122.10.12.123:/dest/folde

Схожие статьи

Архитектура Linux. Детальное описание анатомии Линукса от и до
Linux

Архитектура Linux. Детальное описание анатомии Линукса от и до

Linux

Безопасный стандартный набор правил iptables для базового веб-сервера HTTP(s)

Linux

Целесообразно ли блокировать ICMP?

Linux

Имеет ли смысл включать автоматическое обновление в стабильной версии Debian lenny?

×