Я часто использую SCP для копирования файлов, особенно файлов, связанных с Интернетом. Проблема в том, что всякий раз, когда я это делаю, я не могу получить команду для копирования скрытых файлов (например, .htaccess).
Обычно я вызываю это:
scp -rp src/ user@server:dest/
Это не копирует скрытые файлы. Я не хочу снова вызывать это (делая что-то вроде scp -rp src/.* ...
- и это странно .
и ..
последствия в любом случае.
Я ничего не видел в scp
справочная страница о «включении скрытых файлов».
Как я могу этого добиться?
Это должно полностью соответствовать скрытым файлам. Знак / в конце источника означает «каждый файл в этом каталоге». Тем не менее, испытания и исследования подтверждают это. Это глупое поведение.
"ответ"- это добавить точку в конец источника:
scp -rp src/. user@server:dest/
В настоящий ответ - использовать rsync.
Вы можете попробовать rsync. Для этой работы лучше подходит:
rsync -av src / пользователь @ сервер: назначение /
(И его справочную страницу стоит прочитать.)
Не ставьте косую черту после исходного каталога. Ваш код будет выглядеть так:
scp -rp src user@server:dest/
Это создаст каталог 'src' в 'dest' на удаленном компьютере со всеми включенными скрытыми файлами. Вероятно, это не совсем то, что вам нужно, но он скопирует скрытые файлы в src.
Следующее поможет решить проблему, это было полностью протестировано в нашей среде непрерывной интеграции.
scp -rp src/. user@server:dest/
example scp -rp /usr/src/code/. content001@172.11.11.11:/usr/dest/code/
Надеюсь, поможет
Чтобы скопировать только скрытые файлы, используйте эту команду
scp -rp /path_to_copy_hidden/.[!.]* user@host:/path_to_paste/
Актуальная игра - это /.[!.]*
тег, относящийся к файлам, начинающимся с .
(скрыто)
Ни одно из приведенных выше решений scp не помогло мне. Однако я обнаружил, что с cygwin работает следующее: scp -r directory / * host: directory Символ '*' соответствует всем видимым файлам и пропускает невидимые.
Если вход по паролю отключен на удаленном компьютере, и единственный способ войти в систему - через открытый ключ, вы можете использовать это:
$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress user1@remote.host:/remote/source/directory/ /local/destination/directory/
Он также копирует скрытые файлы.
Также обратите внимание, что «user1» должен иметь разрешения на чтение этих файлов, например, вы не можете копировать ssh-папки других пользователей с помощью этого метода.
Так как scp
поддерживает регулярные выражения, это поможет вам:
scp -rp src/(*|.*) user@server:dest/
Из-за уязвимости CVE-2018-20685 /.
уловка больше нельзя использовать с участием scp
. Однако распределенный контроль версий, например git
или Hg Mecurial будет обрабатывать скрытые файлы, как и любые другие файлы. Вот команды для моих любимых Hg Mercurial:
server:$ sudo apt install mercurial
client:$ sudo apt install mercurial
client:$ hg init src
client:$ cd src/
client:$ hg addr
client:$ hg com -m "first commit"
client:$ cd
client:$ hg clone src ssh://user@server/dest/
Последующие изменения необходимо будет снова зафиксировать с помощью client:$ hg com -m "commit message"
а затем нажал с помощью client:$ hg push
команда. Узнайте больше о продвижении изменений из этого Шпаргалка по Hg Mercurial.