Linuxコマンドラインを使用して、scp
コマンドを使用して、特定のディレクトリからすべてのファイルとフォルダーをコピーします。ただし、tiny_mce
フォルダのようにめったに変更しないものをコピーするために、帯域幅を消費するのは好きではありません。すべてをコピーするトリックですが、フォルダの短いリストをスキップしますか?
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
良い解決策ですが、代替手段を探している場合:
たとえば、ディレクトリ「test」にディレクトリ「foo、bar、baz」が含まれているとします。これらのディレクトリには、さまざまな種類のファイルがあります。
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/
動作するはずです。
私は、毎日rsync よりもユニゾンを好む方法を書き終えたところです。
*.bak
。構成ファイルのサンプルこれは、宛先サーバーから実行したときに機能しました。
rsync -av --progress user@servername:/sourcefolder /destinationfolder --exclude thefoldertoexclude
tiny_mce
ディレクトリを無視するために2つのステップでそれを行うことができます。すべてのディレクトリが小文字で始まると仮定します。
scp -r USER@HOSTNAME:~/FOLDER/[a-s]* .
scp -r USER@HOSTNAME:~/FOLDER/[u-z]* .
また、USER、HOSTNAME、およびFOLDERを実際の値に変更します。