導入 Alibaba Cloud のような OSS ストレージ サービスを使用している場合は、サービスが提供するスケジュールされたバックアップを使用できるため、サーバー上のファイルのバックアップについて心配する必要はありません。 実は、基本的なバックアップの実装は非常に簡単です。通常は、tar や unzip などのコマンドを使用してファイルをパッケージ化し、これに基づいてシェル スクリプトを作成し、Linux の crontab 機能を使用してスケジュール実行プログラムを追加することで、ファイルのバックアップを簡単に実装できます。しかし、ファイル サイズが大きくなり続けても、このアプローチは機能するのでしょうか?答えは間違いなく「いいえ」です。ファイル サイズが大きくなり続けると、占有されるストレージ領域も増加します。この単純なバックアップ方法では、圧縮に時間がかかり、ストレージスペースを大量に占有します。では、この問題をどう解決すればよいのでしょうか?増分バックアップを使用すると、毎回すべてのファイルをバックアップして圧縮することによって発生する時間とスペースの問題を回避できます。 以下に実装方法を説明します(Linuxシステム環境) スクリプトを書く前に、サーバーに crontab 機能があるかどうかを確認する必要があります。
rpm -qa|grep crontab コマンドを使用して、crontab がインストールされているかどうかを確認します。 上の写真はインストールされた状態を示しています。 インストールされていない場合は、yumコマンドを使用してインストールします。 yum -y vixie-cron をインストールします yum -y crontabsをインストール
イントラネット環境の場合、オフラインでインストールする必要がある場合は、オフライン インストール パッケージを見つけることができます。 1. 開始: systemctl start crond.service 2. ステータスを確認します: systemctl status crond.service 上の図に示すように、crontabはすでに実行されています 以下はよく使われるコマンドです systemctl start crond.service // コマンドを開始systemctl status crond.service // ステータスを確認systemctl stop crond.service // コマンドをシャットダウンsystemctl restart crond.service // 再起動systemctl enable crond.service // 起動して実行 systemctlコマンドを使用しない人もいるので、一般的なサービスコマンドを次に示します。 service crond start //サービスを開始します service crond stop //サービスを終了します service crond restart //サービスを再起動 service crond reload //設定を再読み込みします service crond status //crontabサービスのステータスを確認します スクリプトファイルを作成する
スクリプトコマンドを記述します (注: このスクリプトはインターネット上で見つかったもので、元のソースは見つかりませんでした) #!/bin/bash #良い習慣#プロジェクトに応じてスクリプトの名前を変更する#たとえば amountebak.sh または pandawillsbak.sh #このスクリプトは、$bakpp で定義された絶対パス部分に配置するのが最適です。#対応するバックアップ ファイルは $bakpp の下にあります。#たとえば、/usr/backup/amountebak.sh または /usr/backup/pandawillsbak.sh ########## 初期化パス ######## # 以下のパラメータで定義する必要があるパラメータは、$bakpp、$project、$projectpp です。 TAR = /bin/tar # バックアップファイルを保存する場所。プロジェクト名で区別されます bakpp=/data/file_backup/"$project" # バックアップするフォルダ、フォルダパス project=file プロジェクトpp=/データ/ # 変数のパラメータ ym=`日付 +%Y%m` ymd=`日付 +%Y%m%d` # バックアップファイルを保存するサブディレクトリは月ごとに分割されています。親ディレクトリは monthbakpp=$bakpp/$ym で、$bakpp で定義されます。 gidpp=$monthbakpp gidshot=gid$プロジェクト$ym # 完全バックアップファイル名 fullname=$ym #増分バックアップファイル名 incrementalname=$ymd # ログの場所を記録する ログ=$bakpp/$project.log ############# chk_full ####################### # フルバックアップが存在するかどうかを確認し、存在しない場合は作成します # この関数はフルバックアップ ファイルが存在するかどうかを確認し、存在しない場合はすぐにフルバックアップを作成します chk_full() { if [ -e "$monthbakpp"/"$project"_"$ym"_full.tar.gz ];then echo ""$project"_"$ym"_full.tar.gz ファイルが存在します!! ====`date +%Y-%m-%d-%T` " >>$log それ以外 tar_full フィ } ######### chk_incremental ######## # 増分バックアップが存在するかどうかを確認する chk_incremental() { [ -e "$monthbakpp"/"$project"_"$incrementalname"_incremental.tar.gz ] を実行 する incrementalname=`echo "$incrementalname + 0.1" | bc ` 終わり } ######## tar_incremental ####### # 増分バックアップを実行する tar_incremental() { cd $プロジェクトpp echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== "$project"_"$incrementalname"_incremental.tar.gz" を作成します >> $log 睡眠3 $TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$incrementalname"_incremental.tar.gz $project echo "END_TIME========`date +%Y-%m-%d-%T` ==== "$project"_"$incrementalname"_incremental.tar.gz" を作成します >> $log } ######## tar_full ########### tar_full() { $gidpp/$gidshot をタッチする cd $プロジェクトpp echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== "$project"_"$fullname"_full.tar.gz" を作成します >> $log $TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$fullname"_full.tar.gz $project echo "END_TIME========`date +%Y-%m-%d-%T` ==== "$project"_"$fullname"_full.tar.gz" を作成します >> $log } ########### バックアップ ############################### # バックアップの全体的な呼び出し。この時点で、バックアップの前提条件が完全に準備されていることを確認するための適切なチェックが行われます。backup() { [ -d $monthbakpp ]の場合; チェック_フル chk_増分 tar_増分 それ以外 mkdir -p $bakpp/$ym tar_full フィ } ########### 始めましょう ############# # まず$bakppが存在するかどうかを確認し、存在しない場合は作成してバックアップします。if [ -d $bakpp ]; then バックアップ それ以外 mkdir -p $bakpp バックアップ フィ #アドバイス バックアップファイルを置くためのファイルを作成できます。例: /usr/cctcc #crontab #mini 時間 日 月 週 コマンド # */5 * * * * /home/mmroot/zbb/aaa.sh # 0 1 */1 * * /home/mmroot/zbb/aaa.sh # tar -ztf test.tar.gz バックアップファイル内のファイルを表示する wq!コマンドを使用してファイルを保存します このスクリプト ファイルに関して注意すべき点が 3 つあります。 #バックアップファイルが保存される場所。プロジェクト名で区別されます #バックアップするフォルダ、フォルダのパス 上記の3つのパスは、特定の状況に応じて変更する必要があります。 スケジュールされたタスクを追加する: コマンドを入力します
タスクの例
次に、crontab -l を使用して表示します。
スケジュールされたバックアップと増分バックアップについては以上です。 注意: より安全な方法は、ファイル バックアップ ストレージ サーバーとして別のサーバーを見つけることです。ローカル マシンでスケジュールされたバックアップと増分バックアップが完了すると、ファイルはファイル バックアップ ストレージ サーバーにプッシュされます。これにより、ディスクが損傷した場合でもバックアップ機能が確保されます。 Linux でアップロードされたファイルのスケジュールされたバックアップと増分バックアップを実装する方法に関するこの記事はこれで終わりです。Linux のアップロードされたファイルのバックアップに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Windows での mysql-5.7.28 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル
この記事では、参考までにVue More Filter Itemウィジェットの実装方法を例として紹介...
1. CSS を使用して、小さな尖った角のチャット ダイアログ ボックスと尖った角の吹き出しを描画...
目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...
この記事では、カルーセルマップの効果を実現するためのjQueryの具体的なコードを参考までに共有しま...
私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...
序文Nginx 構成のサーバー ブロック内の場所は、リクエスト URI を一致させるために使用され、...
導入この記事では、django + uwsgi + nginx デプロイメントを使用して、Docke...
<br /> 英語原文: http://desktoppub.about.com/od/...
前回の記事では、https を使用したローカルノードサービスアクセスを実装しました。前回の記事の効果...
目次環境まとめモジュール機能関連文書ソースコード分析CCGame.js CCInputManager...
1. トランザクション特性(ACID) (1)原子性トランザクションに関係するプログラムによって実行...
目次1. 一括更新の方法コンソール出力2. フックがルーティングパラメータを取得する方法実行効果1....
30 種類の高品質な英語リボン フォントを無料でダウンロードできます。デザイナーは常に、25 種類の...
解決すべき問題主にコンポーネント間のクロスレベル通信用なぜディスパッチとブロードキャストを自分で実装...
ゼロ: 古いバージョンをアンインストールするDocker の古いバージョンは、docker、dock...