私はUbuntu 16.04(xenial)とBash 4.3.48(1)とzip
3.0を使用しています。
さまざまな機能を含むbashスクリプト()を含むファイルには、生成#!/bin/bash
のためのこの機能もあります。1つのzipファイルでフルデータベースバックアップ+ドキュメントルートバックアップ:
imb() {
drt="/var/www/html"
date="$(date +%F-%T)"
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
rm -f "$drt/db-$date.zip"
}
source ~/function.sh
上記のファイル()を取得し、デバッグモード()imb
で実行しました。set -x
データベースパスワードの入力を求められた後、ある程度時間が経過しました(データベースバックアップが作成されたことを示します)。また、ドキュメントルートの下のすべてのアイテムが圧縮されたことを示す冗長zip(ターミナルに貼り付けるか追跡するには長すぎます)が表示されました。
ただし、バックアップは表示されません/var/www/html/
。
私の質問
その意見のために私は似ていますが、実際には他の2つの質問をする必要があると感じました。
zipは私のファイルをどこに保存しますか
touch
?もちろん、プロセスによって生成され、どこかにあるファイルは必ずしも私のユーザーの所有ではありません。最後のファイルが作成された場所をどのように見つけることができますか?私の現在のユーザー、横になる?
次の場所にあると予想されます/var/www/html/
。
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
しかしそれは真実ではない。/
ルート()から始めて、システムのファイルツリー全体を実行せずに、それが作成された場所を知るための効率的な方法がわかりません。そのシステムでは、おそらく数時間かかるでしょう。
修正する
この質問を使ってホームディレクトリ($HOME/
)にアクセスしてファイルを見つけましたが、なぜドキュメントルートには生成されず、そこに生成されたのかわかりません。
ベストアンサー1
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
そのディレクトリ(この場合はホームディレクトリ)に関係なく、現在のディレクトリにアーカイブを作成します。
アーカイブを作成するには、次のことを知らせる必要があり${drt}
ますzip
。
zip -r "${drt}/all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
特定のユーザーが生成した最後のファイルがどこにあるかを見つける簡単な方法はありません。タイムスタンプを使用find
し、タイムスタンプを降順で並べ替える必要があります。最後の修正時間をおおよその作成時間として使用してください。
find . -user user9303970 -printf "%T@ %p\n" | sort -n -k1,1 -r | head -n 1