アーカイブを作成するときにターゲットディレクトリが存在しない場合は、それ自体を作成するtarオプションがありますか?
だからフォルダはありますが、/1/2
フォルダはありません/1/2/3/
。これを達成するためにtarオプションを使用できますか?
スクリプトで必要なのにオプションがなければ、このようなことをする方が良いでしょうか?
mkdir /1/2/3/ &> /dev/null
フォルダが存在しない場合は作成されますが、すでに存在する場合はすべて空白のままになるため、エラーは発生しません。
今、この方法を使用すると、間違っている可能性があるものはありますか?
デフォルトでは、ユーザーを削除するスクリプトを作成していますが、スクリプトがユーザーを削除する前にユーザーのホームディレクトリを保持するオプションを選択できます。別のコンピュータでスクリプトを使用できるようにするには、/archives
別のコンピュータに存在する場合と存在しない可能性があるフォルダを作成する必要があります。
tarは明らかにアーカイブに指定したパスを再帰的に生成できないため(たとえば、存在しない場合は作成すると/archives/users
生成できません)。tar -czf /archives/users/user1.tgz /home/user1/
/archives
私の解決策について質問があります。書き込みmkdir -p /archives/users/ &> /dev/null
。これは問題になりますか?このスクリプトはユーザー削除スクリプトなので、sudo でのみ実行できます。
答え1
Tarは実際に存在するデータのみを結合できます。
ディレクトリが存在するかどうかを事前に確認する方がスムーズな方法だと思います。アプローチの問題は、ディレクトリを作成できない場合はエラーメッセージが表示されないことです。
これは例ですテスト:
test ! -d /1/2/3 && mkdir /1/2/3
答え2
デフォルトの動作は、tar
アーカイブを抽出するときに欠落しているディレクトリを作成することです。
cpio
代わりに使用する場合は状況が異なるため、不足しているディレクトリを作成するように指示するオプションを指定するtar
必要があります。cpio
-d
作成モードの場合は、存在しないディレクトリを保持する必要がないため、あなたと一致する質問はありません。