web-dev-qa-db-ja.com

scpに隠しファイルをコピーさせるには?

SCPを使用してファイルをコピーします-特にWeb関連のファイル。問題は、これを行うたびに、隠しファイル(.htaccessなど)をコピーするコマンドを取得できないことです。

私は通常これを呼び出します:

scp -rp src/ user@server:dest/

これは隠しファイルをコピーしません。これを再度呼び出す必要はありません(scp -rp src/.* ...のようなものを実行することによって)-とにかく...の意味が変わっています。

「隠しファイルを含める」に関するscpのマニュアルページには何も表示されませんでした。

どうすればこれを達成できますか?

64
rascher

それは隠しファイルと完全に一致するはずです。ソースの最後の/は、「このディレクトリの下にあるすべてのファイル」を示しています。それにもかかわらず、テストと研究はあなたを圧倒します。これは愚かな振る舞いです。

" answer "は、ソースの最後にドットを追加します。

scp -rp src/. user@server:dest/

real答えは、rsyncを使用することです。

68
Matt Simmons

Rsyncを試すことができます。それはこの仕事により適しています:

rsync -av src/user @ server:dest /

(そしてそのマニュアルページは読む価値があります。)

25
cstamas

ソースディレクトリの後にスラッシュを置かないでください。コードは次のようになります。

scp -rp src user@server:dest/

これにより、リモートマシンの「dest」の下に「src」というディレクトリが作成され、すべての隠しファイルが含まれます。それはおそらくあなたが望むものではないかもしれませんが、それは隠しファイルをsrcにコピーします。

9
kbyrd

以下は問題を解決します、これは私たちの継続的な統合環境で完全にテストされています

scp -rp src/. user@server:dest/
example scp -rp /usr/src/code/. [email protected]:/usr/dest/code/

それが役に立てば幸い

3
stevensagaar

隠しファイルのみをコピーするには、このコマンドを使用します

scp -rp /path_to_copy_hidden/.[!.]* user@Host:/path_to_paste/

実際のゲームは、/.[!.]*で始まるファイルを参照している.タグです(非表示)

1

scpは正規表現をサポートしているため、これはうまく機能します。

scp -rp src/(*|.*) user@server:dest/

0
donmutti

分散リビジョン管理は隠しファイルを処理します

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チートシート

0

上記のscpソリューションはどれもうまくいきませんでした。ただし、以下がcygwinで機能することがわかりました。

0
Ray Cote

リモートマシンでパスワードログインが無効になっていて、ログインする唯一の方法が公開鍵を介する場合、これを使用できます:

$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress [email protected]:/remote/source/directory/ /local/destination/directory/

隠しファイルもコピーします。

また、「user1」にはそれらのファイルを読み取る権限が必要であることに注意してください。たとえば、この方法では他のユーザーのsshフォルダーをコピーできません。

0
Gergely Lukacsy