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

<p>я часто использую scp, чтобы копировать файлы - особенно связанные с сетью файлы. проблема в том, что всякий раз, когда я делаю это, я не могу получить команду на копирование скрытых файлов (например, .htaccess).</p><p>я обычно призываю это:</p><pre><code>scp -rp src/ user@server:dest/ </code></pre><p>это не копирует скрытые файлы. я не хочу вызывать это снова (делая что-то вроде <code>scp -rp src/.* ...</code> - и это странно <code>.</code> а также <code>..</code> в любом случае.</p><p>на странице руководства <code>scp</code> я ничего не видел о "включении скрытых файлов".</p><p>как я могу сделать это?</p>

<p>это должно абсолютно соответствовать скрытым файлам./в конце источника говорит "каждый файл в этом каталоге". тем не менее, тестирование и исследования подтверждают ваше мнение. это глупое поведение.</p><p>" <a href="http://www.cyberciti.biz/tips/moving-home-data-from-old-system-to-new-linux-system.html">answer</a> " - добавить точку в конец источника:</p><p><code>scp -rp src/. user@server:dest/</code></p><p><strong> реальный </strong> ответ - использовать rsync.</p>

<p>вы можете попробовать rsync. это лучше подходит для этой работы:</p><blockquote> <p>rsync -av src/user @ server: dest /</p> </blockquote><p>(и его руководство стоит прочитать.)</p>

<p>не ставьте косую черту после исходного каталога. ваш код будет выглядеть так:</p><pre><code>scp -rp src user@server:dest/ </code></pre><p>это создаст каталог 'src' в папке 'dest' на удаленной машине со всеми включенными скрытыми файлами. вероятно, это не совсем то, что вам нужно, но он скопирует скрытые файлы в src.</p>

<p>следующее решит проблему, это было полностью проверено в нашей среде непрерывной интеграции</p><pre><code>scp -rp src/. user@server:dest/ example scp -rp /usr/src/code/. content001@172.11.11.11:/usr/dest/code/ </code></pre><p>надеюсь, поможет</p>

<p>чтобы скопировать только скрытые файлы, используйте эту команду</p><pre><code>scp -rp /path\_to\_copy\_hidden/.[!.]* user@host:/path\_to\_paste/ </code></pre><p>актуальная игра - это <code>/.[!.]*</code> тег, который ссылается на файлы, начинающиеся с <code>.</code> (скрытый)</p>

<p>так как <code>scp</code> поддерживает регулярные выражения, это будет хорошо для вас:</p><p><code>scp -rp src/(*|.*) user@server:dest/</code></p>

<h1>распределенный контроль версий обрабатывает скрытые файлы</h1><p>из-за уязвимости cve-2018-20685 <code>/.</code> трюк <a href="https://superuser.com/a/1403506/219226">больше не может использоваться</a> с <code>scp</code>. однако распределенный контроль версий, такой как <code>git</code> или hg mecurial <strong>, будет обрабатывать скрытые файлы, как и любые другие файлы. </strong> вот команды для моего фаворита - <a href="https://en.wikipedia.org/wiki/mercurial">hg mercurial</a> :</p><pre><code>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/ </code></pre><p>последующие изменения необходимо будет зафиксировать снова с помощью <code>client:$ hg com -m "commit message", а затем нажмите, используя client:$ hg push</code> команда. узнайте больше о внесении изменений из этого <a href="https://hamwaves.com/hg-mercurial/en/index.html">hg mercurial шпаргалка</a> .</p>

<p>ни одно из вышеперечисленных scp-решений не помогло мне. тем не менее, я обнаружил, что на cygwin работает следующее: scp -r directory/* host: directory '*' соответствует всем видимым файлам и пропускает невидимое.</p>

<p>если логин с паролем отключен на удаленной машине, и единственный способ войти - через открытый ключ, то вы можете использовать это:</p><pre><code>$ rsync -av -s 'ssh -i /path/to/your/private/ssh/key' --progress user1@remote.host:/remote/source/directory/ /local/destination/directory/ </code></pre><p>он также копирует скрытые файлы.</p><p>также обратите внимание, что "user1" должен иметь права на чтение этих файлов, например, вы не можете копировать ssh-папки другого пользователя с помощью этого метода.</p>