特定のssh以外のすべてのファイルとディレクトリをコピーするにはどうすればよいですか?


23

Linuxコマンドラインを使用して、scpコマンドを使用して、特定のディレクトリからすべてのファイルとフォルダーをコピーします。ただし、tiny_mceフォルダのようにめったに変更しないものをコピーするために、帯域幅を消費するのは好きではありません。すべてをコピーするトリックですが、フォルダの短いリストをスキップしますか?

回答:


19

rsync正常に動作し、ほとんどの場合、転送プロトコルとしてSSHを自動的に使用します。ファイルを比較し、変更されたファイルのみをアップロードしますが、除外リストを使用して、ツリー内でrsyncしないファイルを指定することもできます。


rsyncはSSHを自動的に使用しませ -それを行うには「-e ssh」フラグを指定する必要があります。

4
はい、そうです。Rsync 2.6.0がリリースされました-デフォルトのリモートシェルは、configureで何か他のものをデフォルトにしたい場合を除き、「ssh」になりました。 samba.org/rsync

12

変更されたファイルのみをコピーするrsyncを試すことができ、sshでも動作します。


9

ここでrsync --excludeは、使用するのがより明白な選択ですが、本当にいくつかのファイルまたはフォルダーを送信し、除外する特定のものが必要な場合は、シェルグロビングを使用できますscp。最初に、シェルに適切なグロビングオプションが設定されていることを確認してください。bashの実行shopt -s extglobおよびzshの使用setopt ksh_glob。次に、このようなもの:

scp /path/to/folder/!(tiny_mce|other_folder|*.bak) user@host:target_path

...指定されたパターンに一致するものを除き、ソースフォルダー内のすべてをコピーします。明らかに、その部分で創造性を発揮できます。


7

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!!

この例では、コマンドはすべてのファイルを同じ宛先ディレクトリに配置します-これは望みの動作ではない場合があります。


1
この回答は、関連するファイル名とディレクトリ名にシェルの特殊文字(空白または\[*?)が含まれていない場合にのみ機能することに注意してください。
ジル 'SO-悪であるのをやめる'

3

試してみたいと思うかもしれないすばらしいツールは「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/

動作するはずです。


0

私は、毎日rsync よりもユニゾンを好む方法を書き終えたところです。

  • トランスポートにssh以外のデーモンは必要ありません
  • いつでもどちらかの側でファイルを変更できます- 複数のマスターを簡単に、一方から同期要求をプッシュするだけで済みます
  • modtime、属性/許可、ソフトリンクなどに関して言えば、私はこだわりです。それで問題ありません。あるプロジェクトでは、4つのミラーを使用します。1つはcygwinホストです。crontabのセットアップの例を参照してください。
  • のような除外をサポートします*.bak。構成ファイルのサンプル

0

セキュアコピーの使用-scp

scp -r file user@host:

多くのファイルをコピーするには

scp /directory/* user@host:destinationPath

一部のファイルをコピーするには

scp /directory/!(*.doc) user@host:destinationPath

.docファイルを除くディレクトリのコンテンツをコピーし ます



0

これは、宛先サーバーから実行したときに機能しました。

rsync -av --progress user@servername:/sourcefolder /destinationfolder --exclude thefoldertoexclude

0

tiny_mceディレクトリを無視するために2つのステップでそれを行うことができます。すべてのディレクトリが小文字で始まると仮定します。

scp -r USER@HOSTNAME:~/FOLDER/[a-s]* .
scp -r USER@HOSTNAME:~/FOLDER/[u-z]* .

また、USER、HOSTNAME、およびFOLDERを実際の値に変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.