Linux でアップロードされたファイルのスケジュールされたバックアップと増分バックアップを実装する方法

Linux でアップロードされたファイルのスケジュールされたバックアップと増分バックアップを実装する方法

導入

Alibaba Cloud のような OSS ストレージ サービスを使用している場合は、サービスが提供するスケジュールされたバックアップを使用できるため、サーバー上のファイルのバックアップについて心配する必要はありません。

実は、基本的なバックアップの実装は非常に簡単です。通常は、tar や unzip などのコマンドを使用してファイルをパッケージ化し、これに基づいてシェル スクリプトを作成し、Linux の crontab 機能を使用してスケジュール実行プログラムを追加することで、ファイルのバックアップを簡単に実装できます。しかし、ファイル サイズが大きくなり続けても、このアプローチは機能するのでしょうか?答えは間違いなく「いいえ」です。ファイル サイズが大きくなり続けると、占有されるストレージ領域も増加します。この単純なバックアップ方法では、圧縮に時間がかかり、ストレージスペースを大量に占有します。では、この問題をどう解決すればよいのでしょうか?増分バックアップを使用すると、毎回すべてのファイルをバックアップして圧縮することによって発生する時間とスペースの問題を回避できます。

以下に実装方法を説明します(Linuxシステム環境)

スクリプトを書く前に、サーバーに crontab 機能があるかどうかを確認する必要があります。

注: このcrontab関数をここで賞賛したいと思います。本当に実用的です

rpm -qa|grep crontab コマンドを使用して、crontab がインストールされているかどうかを確認します。

ここに画像の説明を挿入

上の写真はインストールされた状態を示しています。

インストールされていない場合は、yumコマンドを使用してインストールします。

yum -y vixie-cron をインストールします
yum -y crontabsをインストール

vixie-cron はメインの cron プログラムです。
crontabs は、cron デーモンを駆動するために使用されるテーブルをインストール、アンインストール、または一覧表示するために使用されるプログラムです。

イントラネット環境の場合、オフラインでインストールする必要がある場合は、オフライン インストール パッケージを見つけることができます。

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サービスのステータスを確認します

スクリプトファイルを作成する

vim バックアップ.sh

スクリプトコマンドを記述します (注: このスクリプトはインターネット上で見つかったもので、元のソースは見つかりませんでした)

#!/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 つあります。

#バックアップファイルが保存される場所。プロジェクト名で区別されます
bakpp=/data/file_backup/"$project"

#バックアップするフォルダ、フォルダのパス
プロジェクト=ファイル
プロジェクトpp=/データ/

上記の3つのパスは、特定の状況に応じて変更する必要があります。

スケジュールされたタスクを追加する: コマンドを入力します

crontab -e

タスクの例

05 03 * * * cd /data/file_backup/;sh file_backup.sh

次に、crontab -l を使用して表示します。
バックアップが完了したら、コマンドを使用してバックアップ ファイル内のファイルを表示できます。

tar -ztf file.tar.gz //バックアップファイルを表示

スケジュールされたバックアップと増分バックアップについては以上です。

注意: より安全な方法は、ファイル バックアップ ストレージ サーバーとして別のサーバーを見つけることです。ローカル マシンでスケジュールされたバックアップと増分バックアップが完了すると、ファイルはファイル バックアップ ストレージ サーバーにプッシュされます。これにより、ディスクが損傷した場合でもバックアップ機能が確保されます。

Linux でアップロードされたファイルのスケジュールされたバックアップと増分バックアップを実装する方法に関するこの記事はこれで終わりです。Linux のアップロードされたファイルのバックアップに関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • XshellはWindowsからLinuxホストにファイルをアップロードする方法を実装します
  • Linux ftp コマンドラインでファイルをダウンロードするための get コマンドとファイルをアップロードするための put コマンドの詳細な適用
  • Windows デスクトップで FTP を使用して Linux サーバーにファイルをアップロードする方法
  • Windows で winscp とバッチ処理を使用して、SSH ポート経由で Linux サーバーにファイルをアップロードする
  • LinuxはMySQLデータベースの自動バックアップとスケジュールバックアップを毎日実装しています
  • MySQL データベースの毎日のスケジュールされたバックアップを実行する Linux シェル
  • Linux での crontab スケジュール バックアップの例を使用した MySQL スケジュール バックアップ
  • Linux VPS バックアップ チュートリアル データベース/Web サイト ファイルの自動スケジュール バックアップ

<<:  Windows での mysql-5.7.28 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル

>>:  Vueは商品詳細ページの虫眼鏡機能を実装します

推薦する

2秒以内にHTMLページ内の他のページにリダイレクトする方法

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

MySQLトランザクションの特徴と分離レベルについてお話ししましょう

インターネットにはすでにこの種の記事が溢れていますが、私がこれをまだ書いている理由は単純です。それは...

Nginx ドメイン名 SSL 証明書の構成 (Web サイトの http を https にアップグレード)

序文HTTP と HTTPS日常生活でよく使われる URL は、おおまかに次の 2 種類に分けられま...

MySQLの基本の共通機能

目次1. 共通機能分類1.1 単一行関数: 1.2 グループ化機能: 2. 単一行関数3. 数学関数...

サーバーの購入と初期構築方法

しばらくサーバーいじってなかったけど、やることがなくなったのでモバイルワークスに行って海外サーバーを...

Rabbitmq heartbea ハートビート検出メカニズムの原理の分析

序文RabbitMQ を使用する場合、一定期間クライアントと RabbitMQ サーバーの間でトラフ...

HTMLで特殊記号を表示する(特殊文字対応表付き)

問題の再現HTML を使用して編集する場合、特殊記号によってエラーが表示されることが多く、極端な場合...

証明書を使用してリモート Docker サーバーに接続する方法

目次1. スクリプトを使用してDockerのTLSを暗号化する2. Dockerの設定を変更してリモ...

VMware での Ubuntu 16.04 イメージの完全インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04イメージのインストールチュートリアルを参...

MySQL 5.7.21 winx64 無料インストールバージョン設定方法グラフィックチュートリアル

MySQL 5.7.21 winx64無料インストールバージョンの設定方法、参考までに、具体的な内容...

HTML およびプラグイン アプリケーションにおけるデータ カスタム属性の使用の概要

HTML にはデータ属性が含まれていることがよくあります。これらは HTML5 のカスタム属性です。...

CSS3 はクールな 3D 回転遠近法効果を実現します

CSS3はクールな3D回転パースペクティブを実現します3D アニメーション効果はますます人気が高まっ...

CSS3 は、跳ねるボール効果を実現する Web アニメーションを作成します。

基本的な準備この実装には、クラス名が ball である単純な div が必要です。 HTMLコード:...

データベースクエリ、どのオブジェクトにどのフィールドが含まれているか、メソッドステートメント

データベースは、どのオブジェクトにどのフィールドが含まれているかを照会します。 *を選択 sysob...

MySQL の最適化: InnoDB の最適化

勉強の計画は簡単に中断され、継続するのが困難です。先日、社内で事業の方向性を調整するための会議があり...