SCPを使用してファイルをコピーします-特にWeb関連のファイル。問題は、これを行うたびに、隠しファイル(.htaccessなど)をコピーするコマンドを取得できないことです。
私は通常これを呼び出します:
scp -rp src/ user@server:dest/
これは隠しファイルをコピーしません。これを再度呼び出す必要はありません(scp -rp src/.* ...
のようなものを実行することによって)-とにかく.
と..
の意味が変わっています。
「隠しファイルを含める」に関するscp
のマニュアルページには何も表示されませんでした。
どうすればこれを達成できますか?
それは隠しファイルと完全に一致するはずです。ソースの最後の/は、「このディレクトリの下にあるすべてのファイル」を示しています。それにもかかわらず、テストと研究はあなたを圧倒します。これは愚かな振る舞いです。
" answer "は、ソースの最後にドットを追加します。
scp -rp src/. user@server:dest/
real答えは、rsyncを使用することです。
Rsyncを試すことができます。それはこの仕事により適しています:
rsync -av src/user @ server:dest /
(そしてそのマニュアルページは読む価値があります。)
ソースディレクトリの後にスラッシュを置かないでください。コードは次のようになります。
scp -rp src user@server:dest/
これにより、リモートマシンの「dest」の下に「src」というディレクトリが作成され、すべての隠しファイルが含まれます。それはおそらくあなたが望むものではないかもしれませんが、それは隠しファイルをsrcにコピーします。
以下は問題を解決します、これは私たちの継続的な統合環境で完全にテストされています
scp -rp src/. user@server:dest/
example scp -rp /usr/src/code/. [email protected]:/usr/dest/code/
それが役に立てば幸い
隠しファイルのみをコピーするには、このコマンドを使用します
scp -rp /path_to_copy_hidden/.[!.]* user@Host:/path_to_paste/
実際のゲームは、/.[!.]*
で始まるファイルを参照している.
タグです(非表示)
scp
は正規表現をサポートしているため、これはうまく機能します。
scp -rp src/(*|.*) user@server:dest/
CVE-2018-20685の脆弱性のため、/.
トリック 使用できなくなりました with scp
。ただし、git
やHg Mecurialなどの分散リビジョンコントロールは、他のファイルと同様に隠しファイルを処理します。ここに私のお気に入りのコマンドがあります- 水銀水銀 :
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チートシート 。
上記のscpソリューションはどれもうまくいきませんでした。ただし、以下がcygwinで機能することがわかりました。
リモートマシンでパスワードログインが無効になっていて、ログインする唯一の方法が公開鍵を介する場合、これを使用できます:
$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress [email protected]:/remote/source/directory/ /local/destination/directory/
隠しファイルもコピーします。
また、「user1」にはそれらのファイルを読み取る権限が必要であることに注意してください。たとえば、この方法では他のユーザーのsshフォルダーをコピーできません。