Назад | Перейти на главную страницу

Как заставить scp копировать скрытые файлы?

Я часто использую 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.