web-dev-qa-db-ja.com

サブフォルダーのあるフォルダーをscpできますか?

次のような静的なWebサイトのファイルを含むフォルダーがあります。

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

ラップトップで何かを更新した場合、1つのコマンドでファイルをubuntuサーバーに送信します。 FTPがセットアップされていなくても、scpでこれを処理できるかどうか疑問に思います。

32
Blankman

コマンドscp -r source user@target:destは、sourceのすべてのサブディレクトリを調べてコピーします。

ただし、scpcpのように動作し、ソースと宛先の両方で同じであっても、常にファイルをコピーします。 [回避策については こちら を参照してください。]

これは静的なWebサイトであるため、更新のみを行い、全体を再作成することはほとんどないため、rsyncの代わりに_shでscpを使用すると、物事の進行が速くなります。おそらくのようなもの

rsync -av -e ssh source user@target:dest

...始めましょう。 LAN経由でこれを行う場合は、rsyncの代わりに個人的にオプション-avWを使用します。

Rsyncには、ソース内の削除を複製する機能もあります。したがって、ツリーからファイルを削除する場合は、上記のようにrsyncを実行し、フラグ--deleteを含めると、同じファイルが宛先側から削除されます。

57

scpには、必要な処理を実行する再帰フラグがあります。 scp -r /base/directory user@server:/to/location

man scpから

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.
9
Zypher

他の人が指摘したように、scp -rとrsync -rは、必要なものを取得するための最も信頼できる方法です。

Sshfsを使用して、ローカルドライブのように「マウント」することもできます:sshfs user@Host:/site /mnt/mountpoint

(ただし、おそらくローカルで作業し、rsyncを使用して展開する方がよいでしょう。注意すべきもう1つのツールです。)

2
Luke Schlather