すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ローカルディスク上のデータのバックアップ

最終更新日:Aug 27, 2024

データのセキュリティを向上させ、誤った削除、変更、上書きによるデータの損失や破損を防ぐために、ローカルディスクに保存されているデータを定期的にバックアップできます。 このトピックでは、3つの一般的なバックアップ方法について説明します。Cloud backupサービスを使用した通常のバックアップ、Object Storage service (OSS) へのバックアップ、およびクラウドディスクまたはApsara File Storage NAS (NAS) へのバックアップです。

方法1: クラウドバックアップを使用して、ローカルディスクに保存されているデータを定期的にバックアップする

シナリオ

制限事項

メリット

課金

Cloud Backupは、バックアップ、データ暗号化、迅速なデータ復元などの機能を提供します。 Cloud Backupは、信頼性の高いバックアップソリューションが必要なシナリオに適しています。 クラウドバックアップの詳細については、クラウドバックアップの利点?

  • クラウドバックアップは特定のリージョンではサポートされていません。 クラウドバックアップをサポートするリージョンについては、「サポートされているリージョン」をご参照ください。

  • Cloud Assistant Agentがインスタンスにインストールされている必要があります。

  • 便利で効率的

  • スクリプトをコンパイルする必要はありません

  • 増分バックアップのサポート

  • バックアップとリカバリのサポート

ファイルバックアップソフトウェアの使用量ストレージ容量が課金されます。 Elastic Compute Service (ECS) ファイルのバックアップ機能の詳細については、「概要」トピックの課金セクションを参照してください。

手順

  1. 準備をします。

    • バックアップするデータが存在するローカルディスクが存在するリージョンで、Cloud Backupがサポートされていることを確認します。 クラウドバックアップをサポートするリージョンについては、「サポートされているリージョン」をご参照ください。

    • ローカルディスクを搭載したインスタンスにCloud Assistant Agentがインストールされていることを確認します。

      重要

      インスタンスが2017年12月1日以降に購入された場合、Cloud Assistant Agentはインスタンスでプロビジョニングされます。 Cloud Assistant Agentがインストールされていない場合は、インスタンスにCloud Assistant Agentをインストールする必要があります。 詳細については、「Cloud Assistant Agentのインストール」をご参照ください。

  2. [クラウドバックアップコンソール] にログインし、ローカルディスクが存在するリージョンを選択します。

  3. 左側のナビゲーションペインで、[バックアップ] > [ECS ファイルバックアップ]を選択します。 ECS インスタンスリスト タブで、ローカルディスクが搭載されているインスタンスを見つけ、[操作] 列の [バックアップ] をクリックします。

    image

  4. [バックアップ計画の作成] パネルで、プロンプトに従ってパラメーターを設定し、[OK] をクリックします。

    次の設定に注意してください。 その他のパラメーターについては、「ECSインスタンスからファイルをバックアップする」トピックの「ECSファイルを定期的にバックアップするバックアップ計画の作成」をご参照ください。

    • 备份目录规则: 指定目录 を選択します。

    • ソースパス: データをバックアップするローカルディスクの絶対データストレージパスを入力します。 複数のパスを入力できます。 ルールの詳細については、プロンプトを参照してください。

    • バックアップポリシー: バックアップ時間、バックアップサイクル、バックアップ保持期間などのパラメーターを指定するバックアップポリシーを選択します。 バックアップポリシーが表示されない場合は、まずバックアップポリシーを作成します。 詳細については、「バックアップポリシーの管理」トピックのバックアップポリシーの作成セクションをご参照ください。

    バックアップポリシーのバックアップ時間に達すると、システムはバックアップジョブを実行します。 バックアップジョブのステータスが完了の場合、バックアップジョブは当日に完了します。 バックアップ履歴で履歴バックアップポイントを表示できます。

    image

関連する API
  • データを復元します。 ローカルディスクからクラウドバックアップボールトにデータをバックアップした後、ファイルが欠落または破損している場合、履歴バックアップポイントを使用してファイルを復元できます。 詳細については、「ECSインスタンスへのファイルの復元」をご参照ください。

  • バックアップファイルの参照とダウンロード 詳細については、「ECSインスタンスからのファイルのバックアップ」トピックの「バックアップファイルの参照とダウンロード」セクションをご参照ください。

方法2: ローカルディスクからOSSに定期的にデータをバックアップする

ossutilおよびcrontabコマンドを実行し、自動スクリプトをコンパイルして、ローカルディスクからOSSにデータを定期的にバックアップできます。

シナリオ

要件

課金

この方法は、大規模なデータバックアップシナリオに適しており、低コストで高信頼性を必要とするストレージソリューションに最適です。 OSSの詳細については、「メリット」をご参照ください。

スクリプトはコンパイルする必要があります。

OSSストレージ料金が課金されます。 詳細については、「ストレージ料金」をご参照ください。

重要

この方法では、ローカルディスクからOSSにデータをバックアップする方法の簡単な例を示します。 ビジネス要件を満たすように例を最適化できます。

たとえば、フルバックアップは毎回実行されるため、時間の経過とともにストレージスペースの使用量が増分的に増加したり、ディレクトリ全体がZIPファイルにパッケージ化されたりするため、バックアップ速度とストレージ効率が低下します。 実際のビジネスシナリオでは、ビジネス要件に基づいてカスタムバックアップポリシーを使用できます。 例:

  • 増分または差分バックアップ: 前回のバックアップ以降に変更されたデータのみをバックアップして、ストレージ効率を向上させ、バックアッププロセスを高速化します。

  • ブロックバックアップ: データをバックアップする前に、データセットを複数のブロックに分割したり、ディレクトリ構造やファイルタイプなどのロジックに基づいてデータをグループ化したりできます。

手順

  1. 準備をします。

    • OSSを有効化し、OSSバケットを作成します。 詳細は、「バケットの作成」をご参照ください。

    • データをバックアップするローカルディスクのOSSバケット名、OSSエンドポイント、およびデータストレージパスを取得します。

  2. ECS インスタンスにログインします。

  3. ossutilツールをインストールし、アクセス資格情報を設定します。

    重要

    ossutilツールをダウンロードするには、ローカルディスクを備えたECSインスタンスがインターネットにアクセスできることを確認します。 詳細については、「ECSインスタンスのパブリック帯域幅の有効化」をご参照ください。

    1. ossutilをインストールします。

      sudo yum install unzip -y
      sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
    2. ossutilのアクセス資格情報を設定します。

      を作成します。Create a. ossutilconfigファイルをユーザーディレクトリに配置し、資格情報を設定します。

      sudo -i # Switch to the root user. If the current user does not have sudo permissions, use other logon methods or grant the permissions.
      
      cat <<EOF > /root/.ossutilconfig
      [Credentials]
      language=EN
      endpoint=YourEndpoint
      accessKeyID=YourAccessKeyId
      accessKeySecret=YourAccessKeySecret
      EOF

      YourEndpointYourAccessKeyId、およびYourAccessKeySecretを、ビジネス要件に基づいた実際の値に置き換えます。

  4. スケジュールされたバックアップを実装します。

    1. 圧縮ツールをインストールします。 この例では、zipツールがインストールされています。

      sudo yum install zip
    2. バックアップスクリプトをコンパイルします。 この例では、スクリプトの名前はbackup_to_oss.shです。

      次のコードは、サンプルスクリプトを提供します。 ビジネス要件に基づいてスクリプトを変更する必要があります。 サンプルスクリプトは、ローカルディスクデータをZIPパッケージに圧縮し、ZIPパッケージを指定されたOSSバケットにバックアップするために使用されます。

      • /path/to/your/local/data: ローカルディスクがデータを格納する実際のディレクトリに値を置き換えます。

      • your-bucket-name: 値をOSSバケットの名前に置き換えます。

      • path/in/oss/to/store/backups/: バックアップファイルを保存するOSSのディレクトリに値を置き換えます。

      #!/bin/bash
      
      LOCAL_DIR="/path/to/your/local/data/"
      BACKUP_TMP_DIR="/mnt/backup_tmp/"
      OSS_BUCKET="your-bucket-name"
      OSS_PREFIX="path/in/oss/to/store/backups/"
      SYNC_TIME_FILE="/var/tmp/last_backup.timestamp"
      OSSUTIL_PATH="/usr/bin/ossutil"
      LOG_FILE="/var/log/backup_to_oss.log"
      DATE_STAMP=$(date +%Y%m%d%H%M%S)
      ZIP_FILE_NAME="backup_$DATE_STAMP.zip"
      
      # Check whether the ZIP tool is installed.
      if ! command -v zip &> /dev/null; then
          echo "zip command not found. Please install zip." >&2
          exit 1
      fi
      
      # Create a temporary backup directory if it does not exist.
      mkdir -p "$BACKUP_TMP_DIR"
      
      # Check whether LOCAL_DIR exists and is not empty.
      if [ -z "$(ls -A "$LOCAL_DIR")" ]; then
          echo "No files to backup in $LOCAL_DIR" | tee -a "$LOG_FILE"
          exit 0
      fi
      
      # Package the files that you want to back up and capture error outputs.
      (cd "$LOCAL_DIR" && zip -r "$BACKUP_TMP_DIR/$ZIP_FILE_NAME" .) >> "$LOG_FILE" 2>&1 || {
          echo "Failed to create ZIP archive. Error: $(zip -r "$BACKUP_TMP_DIR/$ZIP_FILE_NAME" . 2>&1)" | tee -a "$LOG_FILE"
          exit 1
      }
      
      if [ $? -eq 0 ]; then
          # Use ossutil to upload a ZIP file.
          OSS_PATH="oss://$OSS_BUCKET/$OSS_PREFIX$ZIP_FILE_NAME"
          if "$OSSUTIL_PATH" cp "$BACKUP_TMP_DIR/$ZIP_FILE_NAME" "$OSS_PATH" >> "$LOG_FILE" 2>&1; then
              echo "Uploaded: $ZIP_FILE_NAME" | tee -a "$LOG_FILE"
          else
              echo "Failed to upload: $ZIP_FILE_NAME" | tee -a "$LOG_FILE"
          fi
          rm "$BACKUP_TMP_DIR/$ZIP_FILE_NAME" # Delete the local ZIP file after a successful upload.
      else
          echo "Failed to create ZIP archive." | tee -a "$LOG_FILE"
      fi
      
      # Record the backup time even if the backup fails to avoid re-uploading the same content.
      date +%s > "$SYNC_TIME_FILE"
      echo "Backup process completed." | tee -a "$LOG_FILE"
  5. スクリプトを実行し、スクリプトをテストする権限を付与します。

    sudo chmod + x /home/backup_to_oss.sh
    . /backup_to_oss.sh 

    スクリプトが期待どおりに実行され、データがOSSにアップロードできることを確認します。

  6. crontab -eコマンドを実行してcrontabエディターを開き、バックアップスクリプトをスケジュールする行を追加します。 たとえば、次のコマンドを実行して、毎日02:00にバックアップスクリプトを実行します。

    0 2 * * /home/backup_to_oss.sh

    /home/backup_to_oss.sh: 値をスクリプトの実際のストレージパスに置き換えます。

  7. 必要に応じて他の設定を構成できます。

    • (オプション) システム起動時にスクリプトを実行します。

      1. backup_to_oss.serviceファイルを作成して開きます。

        sudo vi /etc/systemd/system/backup_to_oss.service
      2. ファイルに次の内容を追加します。 Escキーを押して :wqと入力し、enterキーを押してファイルを保存して閉じます。

        [Unit]
        Description=Back to OSS
        After=network.target
        
        [Service]
        ExecStart=/home/backup_to_oss.sh
        RestartSec=3
        Restart=always
        
        [Install]
        WantedBy=default.target
      3. 次のコマンドを実行して、systemd設定をリロードします。

        sudo systemctl daemon-reload
      4. 次のコマンドを実行してスクリプトを開始し、システムの起動時に開始するようにスクリプトを設定します。

        sudo systemctl start backup_to_oss.service
        sudo systemctl backup_to_oss.service

        を有効にする

    • (オプション) OSSでのバックアップファイルの保存期間を指定します。

      1. オンプレミスファイルを作成し、ライフサイクルルールをXML形式でファイルに設定します。

        vim OSSLifecycleConfig.xml

        次の例では、ファイルをバケットのtest/ pathに30日間保存するようにルールが設定されており、30日以上保存されたすべてのファイルが削除されます。 ビジネス要件に基づいてルールを変更できます。 詳細については、「ライフサイクル」トピックのライフサイクルルールの作成または変更セクションをご参照ください。

        <?xml version="1.0" encoding="UTF-8"?>
        <LifecycleConfiguration>
          <Rule>
            <ID>test-rule1</ID>
            <Prefix>test/</Prefix>
            <Status>Enabled</Status>
            <Expiration>
              <Days>30</Days>
            </Expiration>
          </Rule>
        </LifecycleConfiguration>
      2. ossutilは、ライフサイクル設定を読み取り、指定されたバケットに追加します。

        ossutil lifecycle --method put oss://bucketname OSSLifecycleConfig.xml

        bucketname: 値を実際のOSSバケット名に置き換えます。

バックアップデータのダウンロード

OSSコンソールまたはossutilを使用して、OSSからバックアップされたデータをダウンロードできます。 詳細については、「簡易ダウンロード」をご参照ください。

方法3: ローカルディスクから同じインスタンスに接続されたクラウドディスクまたはNASファイルシステムにデータを定期的にバックアップする

定期的にローカルディスクのデータをZIPパッケージに圧縮し、クラウドディスクまたはNASファイルシステムの特定のパスにデータをバックアップします。

シナリオ

要件

課金

  • クラウドディスク: オンラインストレージとバックアップファイルへの簡単なアクセスが必要なシナリオに適しています。

  • NASファイルシステム: データ共有とバックアップ、またはバックアップデータへの迅速なアクセスが必要なシナリオに適しています。

スクリプトはコンパイルする必要があります。

  • クラウドディスクへのバックアップ: クラウドディスクに対して課金されます。 課金の詳細については、「ブロックストレージデバイス」トピックの「クラウドディスクの課金」セクションを参照してください。

  • NASファイルシステムへのバックアップ: NAS料金が発生します。 課金の詳細については、「課金の概要」をご参照ください。

重要

この方法では、ローカルディスクからOSSにデータをバックアップする方法の簡単な例を示します。 ビジネス要件を満たすように例を最適化できます。

たとえば、フルバックアップは毎回実行されるため、時間の経過とともにストレージスペースの使用量が増分的に増加したり、ディレクトリ全体がZIPファイルにパッケージ化されたりするため、バックアップ速度とストレージ効率が低下します。 実際のビジネスシナリオでは、ビジネス要件に基づいてカスタムバックアップポリシーを使用できます。 例:

  • 増分または差分バックアップ: 前回のバックアップ以降に変更されたデータのみをバックアップして、ストレージ効率を向上させ、バックアッププロセスを高速化します。

  • ブロックバックアップ: データをバックアップする前に、データセットを複数のブロックに分割したり、ディレクトリ構造やファイルタイプなどのロジックに基づいてデータをグループ化したりできます。

手順

  1. 準備をします。

    • ローカルディスクを備えたインスタンスのデータディスクを作成し、データディスクをアタッチして初期化します。 または、NASファイルシステムをインスタンスにマウントします。

      詳細については、「クラウドディスクの迅速な作成と使用」または「Linux ECSインスタンスへのファイルシステムのマウント」トピックの「ステップ2: NASコンソールでのファイルシステムのマウント」をご参照ください。

    • クラウドディスクまたはNASファイルシステムのマウントパスと、データをバックアップするローカルディスクのデータストレージパスを取得します。

  2. スケジュールバックアップを設定します。

    1. ECS インスタンスにログインします。

    2. ZIPツールをインストールします。 次の例では、Alibaba Cloud Linuxが使用されています。

      sudo yum install zip
    3. バックアップスクリプトをコンパイルします。 この例では、スクリプトは /home/backup_script.shディレクトリに格納されています。

      次のコマンドを実行して、スクリプトをコンパイルして保存します。

      vim /home/backup_script.sh

      次の例では、スクリプトをコンパイルして、ローカルディスクデータをZIPパッケージに圧縮し、ZIPパッケージを特定のパスにバックアップします。 ビジネス要件に基づいてスクリプトを変更します。

      • /path/to/local_disk/: 値を、データをバックアップするローカルディスクの絶対データ格納パスに置き換えます。

      • /path/to/backup/: 値を、バックアップするデータの宛先パスに置き換えます。

      #!/bin/bash
      
      # Configure variables.
      LOCAL_DISK="/path/to/local_disk/"
      NAS_MOUNT="/path/to/backup/"
      ZIP_NAME="backup_$(date +%Y%m%d%H%M%S).zip"
      LOG_FILE="/var/log/backup_to_nas.log"
      
      # Make sure that the ZIP tool is installed.
      if ! command -v zip &> /dev/null; then
          echo "Error: zip command not found. Please install zip." >&2
          exit 1
      fi
      
      # Back up data.
      echo "Starting backup at $(date)" >> "$LOG_FILE"
      zip -r "$NAS_MOUNT/$ZIP_NAME" "$LOCAL_DISK" >> "$LOG_FILE" 2>&1
      if [ $? -eq 0 ]; then
          echo "Backup completed successfully at $(date)" | tee -a "$LOG_FILE"
          echo "Backup file: $NAS_MOUNT/$ZIP_NAME" | tee -a "$LOG_FILE"
      else
          echo "Backup failed. Check log for details." >> "$LOG_FILE"
          exit 1
      fi
      
      # Clear expired backups. For example, retain the backups within the previous 30 days.
      
      # find "$NAS_MOUNT" -type f -name 'backup_*' -mtime +30 -delete >> "$LOG_FILE" 2>&1
      # if [ $? -eq 0 ]; then
      #    echo "Old backups cleaned up successfully." >> "$LOG_FILE"
      # else
      #    echo "Error occurred while cleaning up old backups. Check log for details." >> "$LOG_FILE"
      # fi
      
      echo "Backup process finished at $(date)" >> "$LOG_FILE"
    4. スクリプトを保存し、スクリプトを実行する権限を付与します。

      sudo chmod + x /home/backup_script.sh

      /home/backup_script.sh: 値をスクリプトの実際のストレージパスに置き換えます。

    5. crontab -eコマンドを実行してcrontabエディターを開き、バックアップスクリプトをスケジュールする行を追加します。 たとえば、毎日02:00に次のコマンドを実行します。

      0 2 * * /home/backup_script.sh

      /home/backup_script.sh: 値をスクリプトの実際のストレージパスに置き換えます。

    6. (オプション) システム起動時にスクリプトを実行します。

      1. backup_script.serviceファイルを作成します。

        sudo vi /etc/systemd/system/backup_script.service
      2. ファイルに次の内容を追加します。 Escキーを押して :wqと入力し、enterキーを押してファイルを保存して閉じます。

        [Unit]
        Description=Backup Files Script
        After=network.target
        
        [Service]
        ExecStart=/home/backup_script.sh
        
        [Install]
        WantedBy=default.target
      3. 次のコマンドを実行して、systemd設定をリロードします。

        sudo systemctl daemon-reload
      4. 次のコマンドを実行してスクリプトを開始し、システムの起動時にcescriptを起動できるようにします。

        sudo systemctl start backup_script.service
        sudo systemctl enable backup_script.service
バックアップデータのダウンロード

関連する API

  • ローカルディスクから別のECSインスタンスへのデータの移行

    数回クリックするだけで、ローカルディスクを持つ1つ以上のインスタンスのすべてのデータを別のECSインスタンスに移行し、移行先インスタンスにアタッチされたクラウドディスクにデータを保存できます。 これにより、ローカルディスクを持つソースインスタンスのデータがバックアップされます。 詳細については、「ECSインスタンスへのサーバーの移行」をご参照ください。

  • ローカルディスクの損傷の処理

    ローカルディスクが破損した場合、Alibaba Cloudはシステムイベントをトリガーし、通知、対策、イベントサイクルを送信します。 シナリオに基づいてO&Mを実行できます。 詳細については、「ローカルディスクを搭載したインスタンスのO&Mシナリオとシステムイベント」をご参照ください。