導入 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 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル
この記事では、Web デザインにおけるフォーム入力ボックスに関するヒントとコードをいくつか紹介します...
目次概要ジェネリック医薬品とはビルドシステムジェネリック医薬品の一般的な理解ジェネリッククラスジェネ...
pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...
MySQL サーバーをシャットダウンする場合、シャットダウン方法に応じてさまざまな問題が発生する可能...
1. まずMySQLとEclipseの環境を準備します。環境がセットアップされたら、Eclipseの...
time(); 関数関数プロトタイプ: time_t time(time_t *timer)関数の目...
Centos8仮想マシンを起動し、上下キーを押して図1のインターフェースの最初の行を選択します。図1...
ページコンテンツ全体を中央に配置する方法と、コンテンツに合わせて高さを自動的に拡大縮小する方法。これ...
サーバーステータス分析Linux サーバーの CPU の詳細を表示する#CPU情報を表示[root@...
MySQL で concat 関数を使用する方法: CONCAT(文字列1、文字列2、…)戻り値は、...
url-loader をダウンロード 糸を追加 -D URLローダー モジュール: { ルール: {...
目次必要データを取得して送信するテンプレートフィルターフィルターの使用シナリオ要約する必要Vue を...
最近、Yahoo の 34 の黄金律を読み、ウェブサイトのパフォーマンスを最適化する方法を学びました...
問題コードuseEffectによって発生したクロージャの問題コードを見てみましょう 定数 btn =...
初心者の Linux ユーザーとして、私は単純なgcc/g++操作を何度も使用してきましたが、少し複...