回答:
これは隠しファイルと完全に一致するはずです。ソースの末尾の/は、「このディレクトリの下のすべてのファイル」と表示されます。それにもかかわらず、テストと研究はあなたを立証します。これは愚かな振る舞いです。
「答え」は、ソースの最後にドットを追加することです。
scp -rp src/. user@server:dest/
本当の答えは、rsyncのを使用することです。
scp -r source/ host:source2
ドットファイルをコピーします。2007
.
セキュリティの問題のため、最後にaを追加しても機能しなくなります(2019)。これは、ここで説明されています superuser.com/questions/1403473/scp-error-unexpected-filename
以下は問題を解決します。これは当社の継続的統合環境で完全にテストされています
scp -rp src/. user@server:dest/
example scp -rp /usr/src/code/. content001@172.11.11.11:/usr/dest/code/
それが役に立てば幸い
scp: error: unexpected filename: .
。それがあなたのディストリビューションで動作するかどうかをテストしてください、仲間のGoogler :)
隠しファイルのみをコピーするには、このコマンドを使用します
scp -rp /path_to_copy_hidden/.[!.]* user@host:/path_to_paste/
実際のゲームは、(非表示)で/.[!.]*
始まるファイルを参照しているタグです.
リモートマシンでパスワードログインが無効になっており、ログインする唯一の方法が公開鍵を介している場合、これを使用できます:
$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress user1@remote.host:/remote/source/directory/ /local/destination/directory/
隠しファイルもコピーします。
また、「user1」にはこれらのファイルを読み取る権限が必要であることに注意してください。たとえば、この方法では他のユーザーのsshフォルダーをコピーできません。
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
コマンドを使用してプッシュする必要があります。この水銀Mercurialチートシートから変更をプッシュする方法の詳細をご覧ください。
src/.*
コピーsrc/..
(親ディレクトリ)も想定していますよね?