導入 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 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
インターネットにはすでにこの種の記事が溢れていますが、私がこれをまだ書いている理由は単純です。それは...
序文HTTP と HTTPS日常生活でよく使われる URL は、おおまかに次の 2 種類に分けられま...
目次1. 共通機能分類1.1 単一行関数: 1.2 グループ化機能: 2. 単一行関数3. 数学関数...
しばらくサーバーいじってなかったけど、やることがなくなったのでモバイルワークスに行って海外サーバーを...
序文RabbitMQ を使用する場合、一定期間クライアントと RabbitMQ サーバーの間でトラフ...
問題の再現HTML を使用して編集する場合、特殊記号によってエラーが表示されることが多く、極端な場合...
目次1. スクリプトを使用してDockerのTLSを暗号化する2. Dockerの設定を変更してリモ...
この記事では、VMware 12でのUbuntu 16.04イメージのインストールチュートリアルを参...
MySQL 5.7.21 winx64無料インストールバージョンの設定方法、参考までに、具体的な内容...
HTML にはデータ属性が含まれていることがよくあります。これらは HTML5 のカスタム属性です。...
CSS3はクールな3D回転パースペクティブを実現します3D アニメーション効果はますます人気が高まっ...
基本的な準備この実装には、クラス名が ball である単純な div が必要です。 HTMLコード:...
データベースは、どのオブジェクトにどのフィールドが含まれているかを照会します。 *を選択 sysob...
勉強の計画は簡単に中断され、継続するのが困難です。先日、社内で事業の方向性を調整するための会議があり...