scpを使用して複数のファイルをサーバーにアップロードし、ディレクトリ構造を保存する方法は?

scpを使用して複数のファイルをサーバーにアップロードし、ディレクトリ構造を保存する方法は?

ローカルファイルがあります。

/doc/dir-monkey/monkey.txt
/doc/dir-monkey/monkey.xml

/doc/dir-dog/dog.txt
/doc/dir-dog/dog.xml

/doc/dir-cat/cat.txt
/doc/dir-cat/cat.xml

今scpを介してリモートサーバーにアップロードしたいと思います。

ディレクトリを同じ方法で維持し、必要に応じて古いファイルを上書きしたいと思います。私は一度に1つのファイルしかアップロードできないことを知っており、以前にファイルを圧縮してからリモートで解凍する方法についていくつかのヒントを見つけました。これに関する詳細な指示はありますか?

現在MacOSX 10.10を使用しており、リモートサーバーは次のとおりです。

Distributor ID: Debian
Description:    Debian GNU/Linux 7.5 (wheezy)
Release:    7.5
Codename:   wheezy

答え1

利用可能なパラメータとオプションが異なるため、ディストリビューションのマニュアルを参照してください。使用man scp

OSXでSCPを使用した再帰コピーの場合、次のことが機能します。

scp -r /local/directory [email protected]:/remote/directory

答え2

前述したように、scp -r localDir user@server:remoteDirは再帰コピーを実行する必要があります。ファイルのタイムスタンプが気になる場合は、-pフラグを追加するとローカルサーバーにも保存されます(それ以外の場合はコピー時間に変更されます)。
これは少量のデータに適しています。多数のファイル(多数のファイル)を使用して定期的にこれを行う必要があり、変更された内容のみを更新したい場合は、rsyncを使用することをお勧めします。

次のように動作します。

rsync -avz locaDir user@remoteServer:remoteDir

ただし、osxとubuntuではrsyncが必要です(可能です;))。

答え3

これが構造のすべてであるのか、それとも1つのコンポーネントであるのかはわかりません。それであれば、同様のことができますscp -r /doc remote:/doc_copy

これが単なるサブセットであれば、scpですべてのことを行うのははるかに難しいでしょう。いくつかのオプションは、一度に1つずつscpを使用することも、同様のものを使用することもありますrsync(より表現力のある包含/除外インターフェースを使用)。

関連情報