В настоящее время я могу скопировать только один .tar
файл. Но как я могу рекурсивно копировать каталоги scp
?
573
Да, используйте -r
:
scp -rp sourcedirectory user@dest:/path
Примечание: это создает sourcedirectory
внутреннюю часть, /path
поэтому файлы будут в/path/sourcedirectory
-pr
(параметры в обратном порядке) не будут копировать папки, а скорее их содержимое в целевой каталог (очевидно, порядок параметров имеет значение).Хотя предыдущие ответы технически правильны, вы должны рассмотреть возможность использования
rsync
вместо этого.rsync
сравнивает данные на отправляющей и принимающей сторонах с помощью механизма diff, поэтому ему не нужно повторно отправлять данные, которые уже были отправлены ранее.Если вы собираетесь копировать что-либо на удаленную машину более одного раза, используйте
rsync
. На самом деле, это полезно использоватьrsync
каждый раз, потому что он имеет больше элементов управления для таких вещей, как копирование прав доступа и владения файлами и исключение определенных файлов или каталогов. В общем:синхронизирует локальный каталог с удаленным каталогом. Если вы запустите его во второй раз и содержимое локального каталога не изменится, никакие данные не будут переданы - гораздо эффективнее, чем запускать
scp
и копировать все данные каждый раз.Кроме того,
rsync
в отличие от , позволяет очень легко восстанавливаться после прерванных передачscp
.Наконец, современные версии
rsync
по умолчанию работают с ssh, поэтому, еслиscp
он уже работает, онrsync
должен быть заменой.источник
rsync
это более эффективно. В настоящее время онscp
не выполняет копирование между удаленными хостами (по крайней мере, без запуска клиента rsync на одном из них).-av
: v - для многословного, a - для архива и является ярлыком для -rlptgoD, который подразумевает рекурсивное сохранение прав владельца и дат. Если вы хотите только рекурсивное использование-r
Вот для чего этот
-r
вариант. :)См. Справочную страницу scp для получения дополнительной информации, если это необходимо.
источник
Параметр рекурсивного копирования '-r' (нижний регистр)
Что я путаю с опцией обычного локального рекурсивного копирования '-R' (верхний регистр)
источник
Лучший способ - использовать rsync поверх SSH.
Мои любимые варианты: -Pazvessh --delete:
источник
rsync
которые я использовал, будут использоватьсяssh
по умолчанию, поэтому-essh
вряд ли понадобятся. И выбор команды, используемой для подключения к удаленному хосту, действительно не связан с рекурсивным копированием.После поиска флага рекурсивной копии и успешного его использования благодаря этому сообщению, я хотел бы опубликовать только предложение.
Если дело в том, что вы копируете (рекурсивно) каталог. Может быть, если файлы отправлены в сжатом виде, вы могли бы сэкономить время при передаче
В итоге я сделал:
Надеюсь это поможет
источник
.tar.gz
либо.tgz
поскольку файл является архивом tar в формате gzip (поскольку используется-z
флаг).Вы можете рекурсивно скопировать каталог в сжатый архив с помощью этой простой команды:
Например, чтобы скопировать содержимое
/var/log
изdomain.com
в~/logs.tgz
запуске:Вы также можете извлечь файлы в целевой системе, используя каналы. Эта команда скопирует содержимое
/var/log
atdomain.com
в~/destination/log
вашу систему:Хотя для зеркалирования каталога, вы, вероятно, должны использовать
rsync
...источник
Если вы предпочитаете передавать пароль пользователя в качестве параметра, а не вводить его в интерактивном режиме, вы можете использовать
sshpass
(sudo apt-get install -y sshpass
).Пример:
источник
Вы можете использовать опцию -r с командой scp для рекурсивного копирования каталогов в любой системе. Если вам нужно что-то еще, обратитесь к руководству по команде scp . Опция -r обозначает рекурсивную операцию в большинстве команд Linux.
источник
-r
вариант уже был предложен несколько лет назад и является приемлемым ответом.Другой (вероятно, лучше для многократного использования) вариант - использовать NFS - проверить nfs-kernel-server и как настроить общие ресурсы NFS.
источник
scp
но NFS не вариант.