回答:
いいえ、できません。しかしscp
、rsync
代わりに停止して使用できます。部分的なコピーの残りの差分のみがコピーされ、転送したくないファイルやディレクトリを除外できます。
rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
いいえ、-r
または1つのscp
コマンド内で複数のファイル転送を実行するその他の構文は使用できません。
とは言ってscp
も、UNIXのパラダイムに従っています。興味深い方法でチェーン化できるシンプルで正確な機能を提供するプログラムを作成します。これは、ファイルごとに1つずつ、コマンドの個々の呼び出しを対話的に実行するループを作成できることを意味します。その後、実行されている個々のコマンドから抜け出すことができます。(Ctrl-C)
このコードは読者への課題として残されていますが、対話型シェル内でこのループを実行する必要性を強調する必要があります。非対話型シェルから抜け出すと、ジョブ全体が終了します。
はい、できます!
リモートディレクトリをリストして、各ファイルを個別にコピーしましょう。次に、コピーしないファイルごとにctrl-cを押します。
OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"
OLD_IFSは、スペースを含むファイルを処理するためのものです。