cronによるDropboxバックアップストレージのクリーニング

Dropboxにバックアップをリモートで保存するようにAkeeba Backup Proを設定する機会がありました。 そして、その過程で、AkeebaはまさにDropboxのみを捨てることができることが判明しましたが、それ以降はジャンクを手動でクリーンアップする必要があります。 しかし、手動で-ファムではなく、ギガバイトのアーカイブを少し。 したがって、何とか助けを借りずに時代遅れの手を取り除く必要があります。



そのため、フルバックアップは3時間ごとに「 フル 」フォルダーにダウンロードされます。 Mysqlデータベース-30分ごとに「 mysql 」フォルダーに。 そのため、サイトの所有者が望んでいる、彼はこのDropbox Proの代金を支払った。



必要なのは、古いフルアーカイブをすべて削除して、1日に1つを残すことです(そうでした!)。そして、今日を除くすべてのMysqlバックアップ。



すぐに警告します-最近、CentOSを使用してから1年も経っていません。 テストWebサーバー(LAMP)として仮想マシンにインストールされ、月1回強制的にコンソールにアクセスし、以下のすべてが文字通り「最初から」数時間で生まれたため、古き良きMS-DOS 6.22で「バッチファイル」を作成しました。恵みで輝きません。



まず、質問に戸惑っていました-コンソールからDropboxにアクセスするには? インターネットで短い検索をした後、素晴らしいbashスクリプトDropbox_Uploaderが発見されました 。これは、ダウンロードしただけでなく、 listdeleteなどの他の重要なコマンドもダウンロードできることがわかりました 。 それは不運です-彼は「リストに従って」を削除するように訓練されているかどうかすぐにはわかりませんでした。



Dropbox_uploaderは単純にインストールする-コマンドでダウンロードする

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
      
      





私たちはすべての人に読んで実行する権利を与えます

 chmod +rx dropbox_uploader.sh
      
      





その後、実行します

 ./dropbox_uploader.sh
      
      





画面上のプロンプトに従ってDropboxへのアクセスを構成し(Dropbox Webサイトで新しいアプリケーションを作成し、APPキーとAPPシークレットスクリプトをフィードします)、スクリプトを/ usr / bin /に転送して、誰でも、そして最も重要なのは王冠にアクセスできるようにします。



list fullコマンドのDropbox_uploder(思い出してください、「 full 」はフォルダの名前です)は次のようなものを表示します

 > Listing "/full"... DONE [F] 1218610223 site-sitename.com-20150908-000001.jpa [F] 1218610223 site-sitename.com-20150908-030001.jpa [F] 1218610223 site-sitename.com-20150908-060001.jpa [F] 1218610223 site-sitename.com-20150908-090001.jpa [F] 1218610223 site-sitename.com-20150908-120001.jpa [F] 1218610223 site-sitename.com-20150908-150001.jpa [F] 1218610223 site-sitename.com-20150908-180001.jpa [F] 1218610223 site-sitename.com-20150908-210001.jpa ...  .. ... [F] 1218610223 site-sitename.com-20150915-150001.jpa [F] 1218610223 site-sitename.com-20150915-180001.jpa [F] 1218610223 site-sitename.com-20150915-210001.jpa
      
      





すぐに/ usr / binに独自のスクリプトclean_dropbox.shを作成します(理由はありません)。同じ権限755で、その中に:



1.不要なアーカイブのリストを作成する

 dropbox_uploader.sh list full *.jpa | cut -d ' ' -f4 | grep -v $(date +%Y%m%d) | grep -v -e '-00' | grep -v 'full' > todel.txt
      
      





フルフォルダーからの* .jpaファイルの結果リストは、カットといくつかのgrepによってフィルターされ、ファイルに保存されます。

切り取りはファイル名のみを残します( -d ''はスペース区切り文字、 -f4は4番目のフィールドです)。 はい、4番目、なぜなら 行はスペースで始まります。

最初のgrepは今日のアーカイブを破棄し、2番目は真夜中から1時間以内に作成されたアーカイブを除外し、3番目はフォルダー名「/ full」...の行をリストの先頭から削除します。



2.結果のファイルは変数(文字列の配列)に読み込まれます

 files=$(<todel.txt)
      
      





3.配列をループし、各ファイルを削除します

 for file in $files do dropbox_uploader.sh delete /full/"$file" >> /var/log/cleanup.log done
      
      





スクリプトが出力をログファイルに書き込む場合に備えて、スクリプトがクラウンで機能することを前提としています。



これにより、完全なアーカイブの処理は完了したと見なされ、mysqlアーカイブは残ります。

すべて軌道に乗っています。 単純化されたgrepを使用したファイルのリスト-古いバックアップはまったく必要ありません。サイズはかなり許容できるため、1日で山を許容できます。

 dropbox_uploader.sh list mysql *.sql | cut -d ' ' -f4 | grep -v $(date +%Y%m%d) | grep -v 'mysql' > todel.txt
      
      





同様に、不要なループを削除します

 dropbox_uploader.sh delete /mysql/"$file" >> /var/log/cleanup.log
      
      





そして最後に、使い果たされたファイルのリストを削除ます

 rm todel.txt
      
      





それだけで、今では形の冠を作成するのに十分です

50 23 * * * clean_dropbox.sh







出来上がり!



Linuxの第一人者にとって、私の投稿は実際には役に立たないことを理解していますが、Habrを読んだような無知なことです 誰かが役に立つといいな。



All Articles