Linuxコマンドラインを使用して、scp
コマンドを使用し、特定のディレクトリからすべてのファイルとフォルダーをコピーします。ただし、tiny_mce
フォルダーのようにほとんど変更しないものをコピーするため、帯域幅を消費したくありません。すべてをコピーするコツは何ですか、フォルダの短いリストをスキップしますか?
rsync
は正常に動作し、ほとんどの場合、トランスポートプロトコルとしてSSHを自動的に使用します。ファイルを比較して、変更されたファイルのみをアップロードします。ただし、 除外リスト を使用して、rsyncを行わないファイルをツリー内で指定することもできます。
あなたは試すことができます rsync これは変更されたファイルのみをコピーし、sshでも動作します。
ここではrsync --exclude
を使用するのがより明白な選択ですが、本当にいくつかのファイルまたはフォルダーを送信し、特定のものを除外したい場合は、scp
でシェルグロビングを使用できます。まず、シェルに適切なグロビングオプションが設定されていることを確認します。 bashの場合はshopt -s extglob
を実行し、zshの場合はsetopt ksh_glob
を使用します。次に、このようなもの:
scp /path/to/folder/!(tiny_mce|other_folder|*.bak) user@Host:target_path
...指定されたパターンに一致するものを除いて、ソースフォルダ内のすべてをコピーします。もちろん、その部分で創造的になることができます。
rsync
は良い解決策ですが、別の方法を探している場合:
たとえば、「foo」、「bar、baz」というディレクトリを含む「test」というディレクトリがあるとします。これらのディレクトリには、さまざまなファイルタイプがたくさんあります。
test
|____bar
| |____1.jpg
| |____1.png
| |____1.txt
| |____2.jpg
| |____2.png
| |____2.txt
|____baz
| |____1.avi
| |____2.avi
| |____3.png
|____foo
| |____test.blah
|____test.txt
PNG以外のすべてをコピーしたい
scp $(find /location/of/test -type f ! -name "*.png") # -> Note the logical NOT!!
この例では、コマンドはすべてのファイルを同じ宛先ディレクトリに配置します-これはあなたが望む動作ではないかもしれません。
試してみるのに最適なツールは「lftp」です。
lftp sftp://etc.etc/
lftp> ls
--- remote listing ---
lftp> mirror -R -n local/ remote/
Ssh経由でRSyncを使用することもできます
rsync -avzp -e ssh /this/dir/ remoteuser@remotehost:/remote/dir/
うまくいくはずです。
セキュアコピーの使用-scp
_scp -r file user@Host:
_
多くのファイルをコピーするには
_scp /directory/* user@Host:destinationPath
_
一部のファイルをコピーするには
scp /directory/!(*.doc) user@Host:destinationPath
。docファイル以外のディレクトリの内容をコピーします
私は確かにrsyncをお勧めします。
rsync -vra --exclude = "除外するもの" -e sshフォルダーuser @ remotehost:/ folder
tiny_mce
ディレクトリを無視するには、2つのステップでそれを行うことができます。すべてのディレクトリが小文字で始まると仮定します。
scp -r USER@HOSTNAME:~/FOLDER/[a-s]* .
scp -r USER@HOSTNAME:~/FOLDER/[u-z]* .
また、USER、HOSTNAME、およびFOLDERを実際の値に変更します。
これは、移行先サーバーから実行したときにうまくいきました。
rsync -av --progress user@servername:/sourcefolder /destinationfolder --exclude thefoldertoexclude
私はちょうど終わりました rsyncよりもunisonを好む方法を書く それ以来、
*.bak
などの除外をサポートしています。私の設定ファイルのサンプル