導入 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 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル
最近、MySQL を使っています。Linux での mysql-installation という記事...
目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...
jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。効果...
序文サーバーシステム環境は、CentOS 6.5 (最終) です。 FFmpeg をサーバーに正常に...
この記事では、例を使用して MySQL トリガーの簡単な使用方法を説明します。ご参考までに、詳細は以...
clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...
1. はじめに場合によっては、Web プラットフォームがオンラインになった後、サービス インターフェ...
以下は、Flex レイアウトを使用した棒グラフです。 HTML: <div class=&qu...
フレックス コンテナーを作成するには、要素に display: flex プロパティを追加するだけで...
MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...
ダウンロードダウンロードアドレス: https://dev.mysql.com/downloads/...
1. コマンドの紹介read コマンドは、シェルの組み込みコマンドで、標準入力または -u オプショ...
長い間ウェブサイトを作ってきましたが、入力時のnameとidの違いがまだわかりません。最近jQuer...
この記事では、例を使用して、MySQL でスケジュールされたタスクを設定する方法について説明します。...
この記事では主に、Vue でシンプルな無限ループスクロールアニメーションを実装し、みんなで共有する例...