サーバーと同期しているクラウドにGoogle Driveフォルダがあり、それを使用してWordPress WebディレクトリとMySQLデータベースダンプをバックアップして復元します。これにはrcloneを使用します。以下を使用してディレクトリツリー全体を表示できます。
root@ubuntu-server:~# rclone tree "Google Drive Backup:WordPress Backups"
/
└── 2020
├── November
│ └── Sunday 29
│ └── WordPress backup 29-11-20 (13.55.23).tar.gz
└── October
└── Thursday 15
├── WordPress backup 15-10-20 (12.15.11).tar.gz
└── WordPress backup 15-10-20 (23.59.03).tar.gz
5 directories, 3 files
時間が経つにつれて、このリストはかなり大きくなるので、フィルタリングシステムを実装してリストを減らして見たいファイルを見つけようとしています。一連の質問をし、ユーザー入力に基づいていくつかの変数の値を設定する小さなスクリプトを作成しました。
# Menu
clear
echo "What year would you like to see?"
read -p "Please enter the full year number below e.g. 2020:"$'\n> ' Year
clear
echo "What month would you like to see?"
read -p "Please enter the full month below (case sensitive) e.g. January:"$'\n> ' Month
clear
echo "What day would you like to see?"
read -p "Please enter the day below (requires two characters) e.g. 04:"$'\n> ' Day
clear
デフォルトでは、コマンドの出力を取得し、変数rclone tree
に設定された値を使用してフィルタリングしたいと思います。現在、3つの変数があります。
- 年度
- 月
- 空
grepコマンドと変数のいずれかを使用してディレクトリツリーをフィルタリングする例は次のとおりです。
rclone tree "Google Drive Backup:WordPress Backups" | grep $Month
rclone tree "Google Drive Backup:WordPress Backups" | grep November
私が直面している問題は、フォルダ内のサブリストが表示されないことです。次の問題が残っています。
root@ubuntu-server:~# rclone tree "Google Drive Backup:WordPress Backups" | grep November
├── November
サブディレクトリと孫ディレクトリを一覧表示する必要があるため、検索に問題がありますが、2020
残りは次のとおりです。
root@ubuntu-server:~# rclone tree "Google Drive Backup:WordPress Backups" | grep 2020
└── 2020
ディレクトリツリーが確認済みの数値でフィルタリングされたら、Bashスクリプトメニューの各リストを対応する数値オプションに置き換えたいと思います。スクリプトユーザーはCLIに数字を入力するだけで、その数字はフィルタリングされたリストのファイルに対応します。これにより、完全なファイル名パスを記録する時間が節約されます。フィルタが適用されない場合は、すべてのバックアップファイルを表示するYes / Noプロンプト警告を作成します。すべてのバックアップをリストすることにした場合は、リストを一度に10行に制限したいと思います。どうやってこれを達成できますか?more
ページごとに10個の項目のみを表示するためにstdoutから渡されたコマンドを使用することを検討しました。たとえば、次のようになります。
root@ubuntu-server:~# ls / | more -10
bin
boot
dev
etc
home
lib
lib32
lib64
libx32
lost+found
--More--
ただし、Enterキーを押すと、--More--
別の10行に移動せずに一度に1行だけ移動します。
答え1
rclone tree
スクリプトを入力するのではなく、視覚化のためのものです。この試み:
$ rclone ls "Google Drive Backup:WordPress Backups"
各行には完全修飾パス名があります。これで、以下をフィルタリングできますNovember 2020
。
$ rclone ls "Google Drive Backup:WordPress Backups" | grep '-11-20'