Мне нужно скопировать все файлы .class с сервера на локальный со всем зарезервированным каталогом. Например server:/usr/some/unknown/number/of/sub/folders/me.class
, /usr/project/backup/some/unknown/number/of/sub/folders/me.class
проблема в том, что есть много других бесполезных файлов, таких как файлы .svn-base, которые мне не нужны. как я могу отфильтровать их, чтобы использовать только scp
файлы .class?
99
Ответы:
Я бы , наверное , рекомендую использовать что - то вроде
rsync
для этого из - за егоinclude
иexclude
флаги, например: -Еще несколько полезных флагов:
-r
для рекурсивного-a
для архива (в основном все файлы)-v
для подробного вывода-e
чтобы указать ssh вместо значения по умолчанию (которое на самом деле должно быть ssh)источник
-a
уже включена-r
согласно справочным страницам rsync.--prune-empty-dirs
удалит пустые каталоги.Чтобы исключить точечные файлы из базового каталога:
[!.]*
- это глобус оболочки, который расширяется до всех файлов в рабочем каталоге, не начинающихся с точки.источник
scp -r [\!.]* server:/path/to/something
В scp нет функции фильтрации файлов. Для таких «продвинутых» вещей я рекомендую использовать rsync:
(эта строка копирует rsync из удаленной папки в текущую)
Последние версии rsync-туннеля по ssh-соединению по умолчанию автоматически.
источник
Поскольку вы можете,
scp
вы должны быть в порядкеssh
,либо напишите следующее, либо войдите и выполните ...
вернуться (выйти) на локальный сервер и
scp
,Если вы обнаружите, что
$(find ...)
ваш tar слишком длинный,Наконец, если вы храните его
/usr/project/backup/
,зачем беспокоиться об извлечении? Просто сохраните
tar.bz2
, возможно, с датой + отметкой времени.источник
rsync
иssh
установить в ОС. Вместо этого это был умный обходной путь. Спасибо!Ниже команда для файлов.
scp `find. -maxdepth 1 -name "* .log" \! -name "hs_err_pid2801.log" -type f` root @ IP: / tmp / test /
Команда ниже для каталога.
scp -r `найти. -maxdepth 1 -name "lo *" \! -name "localhost" -type d` root @ IP: / tmp / test /
вы можете настроить указанную выше команду в соответствии с вашими требованиями.
источник
При включенной аутентификации на основе ключа ssh будет работать следующий сценарий.
источник
Если вы действительно хотите использовать scp, есть косвенный способ. Скажем, мы хотим скопировать весь файл .jpg из локальной папки '/ src' в папку '/ dst' на удаленном сервере 10.1.1.2:
источник
источник
Скопируйте исходную папку в
somedir
:cp -r
srcdir
somedir
Удалите все ненужные файлы:
найти somedir -name '.svn' -exec rm -rf {} \ +
запустить scp из
somedir
источник
tar
илиzip
. Вместо этого сжатия нет (сжатие выполняет scp), и «упакованный» код копируется.