すべてのサブディレクトリを除外し、rsyncにディレクトリのファイルを含めるにはどうすればよいですか?


13

Ubuntuシステムをバックアップしたいのですが、2つのパーティションがあります。1つは/、もう1つはです/home

私はおそらくバックアップしたいと思うでしょう/。これはそれほど大きくないので、SDカードに入れて持ち運ぶことができますが、イメージを作成したいほど反応が良いです(そのため、現時点ではrsyncを使用しようとしています)。

/home、それは私はおそらくそれらを含めないだろうが、私はのようなそこにあるファイル、気をつけたいので、私はあまり気にしないことを多くのサブディレクトリがあり.bash_history.bashrc.face、などを。

だから私はすべてのサブディレクトリを除外する一方で、ファイルを/home。どうすればそれを達成できますか?

--exclude "*/"動作していませんでした。"/*/""/**/"--include "*" --exclude */私が欲しいものを私に示していません。少なくともソースフォルダーをコピーし、その中には何もコピーしません。

回答:


17

このコマンドを試してください:

rsync -a -f"- */" -f"+ *" /home/user/ destination/

man rsync

-f, --filter=RULE           add a file-filtering RULE

すべてのファイルを含め*、dirsを除外するルール*/

通常のコピーを使用する別のアプローチ cp

cp /home/usr/* /destination

リダイレクトを使用して、dirsに関するエラーを取り除くことができます

cp /home/usr/* /destination 2>/dev/null

これは、ディレクトリなしであなたの家の中のファイルだけをコピーします


/ procには仮想の非現実的なファイルシステムがあり、バックアップから除外する必要があります。また、/ tmpと/ runを除外する必要があります
-Maythux

:物事をバックアップするための私の元のコマンドは、このようなものだったrsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H -b -s --exclude home/dinir/ --exclude media/ --exclude proc/kcore / /home/dinir/Temporal Site for Storing Backups
Dinir

/ proc、/ tmp、および/ run、Check!とにかく、私のコメントにあるように、ほとんど例外を除いて、ホームディレクトリを除くルートファイルシステム全体をバックアップしました。-f" */" -f"+ *"コードに入れても安全ですか?たぶんそれは次のようになり-f"- home/dinir/*/" -f"+ home/dinir/*"ますか?
ディニール

次のように使用する必要があります-f"- home/dinir/*/" -f"+ home/dinir/*"
-Maythux

しかし、あなたの家にcpを使用することをお勧めします、それははるかに簡単です
-Maythux

3

あなたがこの問題を解決したい場合--include--excludeパラメータ、あなたがそれらの順序を変更する必要があります:最初のあなたが欲しいものを除外し、その後、すべてのものが含まれます。私は通常このコマンドでそれを行います:

rsync -vazhP path/to/source path/to/dest --exclude '*/*/' --include '*'

2

デフォルトでrsyncは、ディレクトリをコピーしません。おそらくあなたは-aフラグを使用しています。このような場合は、によるという通知manページ-aと同等ですが-rlptgoD、あなたが再帰したくない場合は、そう、ちょうど使用します-lptgoD


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