xより小さいサイズのファイルをscpするにはどうすればよいですか?


13

私はラップトップ上で何かを開発し、高性能PC(モニターのないサーバー)にファイルをscpします。怠ofのうち、私は現在これを(ラップトップで)行っています:

scp -r ~/project/* server:~/project/

ただし、プロジェクトディレクトリ内のファイルの一部は、送信する必要のないログファイルと出力ファイルです。私が欲しいのは、基本的に同じことを行い(プロジェクトとそのサブディレクトリのすべてのファイルを送信する)、100 mbなどの特定のファイルサイズのしきい値の下でのみファイルを送信するきれいなコマンドです。私はbashについてはあまり経験がなく、正規表現はまったく経験していないので、sysをpythonにインポートしてifと比較の束を使用するなどの複雑な方法なしでこれを行う方法はまったくわかりません。

回答:


27

除外するファイルサイズを制御するオプションを持つ「rsync」コマンドを使用できます。

rsync -rv --max-size=100m /path/in/local/ server:~/project/

' man rsync 'から、

--max-size=SIZE    don't transfer any file larger than SIZE

更新された回答: 'rsync'でログファイルを除外するだけです--excludeオプションは以下のとおりです

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

または、「scp」と「find」コマンドの組み合わせを使用し、-sizeオプションでファイルサイズの制限を指定できます。! -name '*.log'「ログ」で終わる特定のファイルを除外するために使用します。

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;

1
OP:のメモrsyncはに似てscpいますが、ファイルが変更された場合に変更のみを転送するため、より効率的です。
水田ランダウ

ディレクトリの順序に注意してくださいrsync -rv --max-size SOURCE DESTINATION。私はきちんと読みませんでした、そしてこのクーデターは非常に悪い結果をもたらします。
toto_tico
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.