どのバックアップをしたいですか?
- 、、、を含むユーザーホームディレクトリを
Desktop
各ユーザーごとにバックアップする必要があります。Documents
Pictures
thunderbird
/home
すべてのユーザーは、それぞれのユーザー名を持つパーティションにあります。/home
除外する必要がある特定のユーザーとファイルがあります。
私は今まで何を試みたか。
$ tar cvf home01 -T include /home
メモ:Tは、ファイルに記載されている内容だけを取りますが、機能しないことを意味します。
$ find . \( -name \*Desktop -o -name \*Documents\* -o -name \*Pictures\* -o -name \.thunderbird\* \) |
xargs tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.zip
メモ:メンションディレクトリをバックアップしますが、各ユーザーのディレクトリをフォルダに配置します。
例えば
$ ls -l /home
/home/user1/{Desktop,Documents,Pictures,.thunderbird}
/home/user2/{Desktop,Documents,Pictures,.thunderbird}
/home/user3/{Desktop,Documents,Pictures,.thunderbird}
/home/user4/{Desktop,Documents,Pictures,.thunderbird}
/home/user5/{Desktop,Documents,Pictures,.thunderbird}
ホームディレクトリのバックアップを実行し、その項目から除外しますuser1
。user2
user3
user4
user5
答え1
ほぼ全部来ました!これを行う必要があります:
tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.zip */{Desktop,Documents,Pictures,.thunderbird} --exclude=user4 --exclude=user5
答え2
コマンドの使用法を保存する方法は次のとおりですfind
。
$ find . \( -type d -path */Desktop -o -path */.thunderbird -o -path */Pictures \\) \! -path '*user[45]*' -prune | xargs tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz
より簡単なバージョンは次のとおりです。
$ find . \( -type d \
-path */Desktop -o -path */.thunderbird -o -path */Pictures \) \
\! -path '*user[45]*' -prune \
| xargs tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz
その後、名前は最初の角括弧ブロック内のすべてのディレクトリを探します\( ... \)
。ディレクトリは次のとおりです。
*/Desktop
*/thunderbird
*/Pictures
2番目の部分は、パターンに一致するすべてのパスを除外します*user[45]*
。これらの項目はリストから削除されました。最後に、結果のディレクトリリストをtarに渡します。
その他の考慮事項
上記はいいえ防弾。その文字列を含むパスまたはuser4
そのuser5
中に含まれるパスは除外されます。また、コマンドでビルドするものが何であれ、ファイル名のスペースを処理できることを確認してください。