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

Как лучше всего послать сигнал всем членам группы процессов

Как извлечь или распаковать tar.xz в Linux, чем открыть файл
Linux

Как извлечь или распаковать tar.xz в Linux, чем открыть файл

Как установить Gnome 3, что такое графическая оболочка Gnome Shell
Linux

Как установить Gnome 3, что такое графическая оболочка Gnome Shell

Linux

Каковы точные различия на уровне протокола между SSL и TLS?

×