備份本地盤文件
為了避免因誤刪除、誤修改、誤覆蓋等操作引起的數(shù)據(jù)丟失或受損,您可以定期備份本地盤的文件,提高數(shù)據(jù)安全性。您可以參考本文通過(guò)以下三種常用方式備份:通過(guò)云備份定期備份、備份至OSS、備份至云盤或NAS。本文不適用于備份自建數(shù)據(jù)庫(kù)。
本文僅適用于備份本地盤的文件,如果本地盤存儲(chǔ)了數(shù)據(jù)庫(kù),且您需要備份該數(shù)據(jù)庫(kù),可以參見備份ECS自建數(shù)據(jù)庫(kù)。
方式一:通過(guò)云備份定期備份
適用場(chǎng)景 | 限制 | 特點(diǎn) | 費(fèi)用 |
云備份支持對(duì)ECS上的文件或文件目錄進(jìn)行定期備份(例如備份本地盤、自建數(shù)據(jù)庫(kù)Oracle/MySQL/SQL Server),并在需要時(shí)進(jìn)行數(shù)據(jù)恢復(fù),適用于需要高度可靠備份方案的場(chǎng)景。更多關(guān)于云備份的信息,請(qǐng)參見為什么要選擇云備份。 |
|
| 收取文件備份軟件使用費(fèi)和存儲(chǔ)容量費(fèi)等。計(jì)費(fèi)詳情,請(qǐng)參見ECS文件備份費(fèi)用。 |
操作步驟
準(zhǔn)備工作。
確保本地盤所在地域需支持云備份服務(wù)。支持云備份的地域,請(qǐng)參見開服地域。
確保本地盤所屬實(shí)例已經(jīng)安裝云助手。
重要如果實(shí)例是2017年12月01日之后購(gòu)買的,則默認(rèn)已預(yù)裝云助手客戶端,無(wú)需再安裝;否則需要您自行安裝云助手Agent。
登錄云備份Cloud Backup控制臺(tái),并選擇地域?yàn)楸镜乇P所在地域。
左側(cè)導(dǎo)航欄選擇
,在ECS實(shí)例列表頁(yè)簽找到本地盤所屬實(shí)例,在操作欄單擊備份。進(jìn)入創(chuàng)建備份計(jì)劃頁(yè)面,按照界面提示配置,單擊確定。
請(qǐng)注意以下配置(其他配置按需設(shè)置,說(shuō)明請(qǐng)參考創(chuàng)建備份計(jì)劃周期性備份云服務(wù)器ECS文件):
備份目錄規(guī)則:選擇指定目錄。
備份文件路徑:填寫需要備份的本地盤數(shù)據(jù)的絕對(duì)路徑,支持多個(gè)路徑。具體規(guī)則,請(qǐng)參考界面提示。
備份策略:用于指定備份時(shí)間、周期、備份保留時(shí)間等。若未創(chuàng)建備份策略,請(qǐng)先新建備份策略。
當(dāng)達(dá)到備份執(zhí)行時(shí)間時(shí),系統(tǒng)就會(huì)啟動(dòng)執(zhí)行備份任務(wù)。當(dāng)備份任務(wù)狀態(tài)為成功時(shí),表示當(dāng)天備份完成。您可以在備份歷史中看到備份點(diǎn)。
相關(guān)操作
恢復(fù)數(shù)據(jù):將本地盤數(shù)據(jù)備份到云上備份庫(kù)后,若文件丟失或者異常時(shí),您可以根據(jù)歷史備份點(diǎn)進(jìn)行文件恢復(fù)。具體操作,請(qǐng)參見恢復(fù)ECS文件。
瀏覽和下載已備份文件:具體操作,請(qǐng)參見瀏覽和下載備份文件。
方式二:定期備份至OSS
通過(guò)ossutil
和crontab
命令,并編寫自動(dòng)化腳本,定期備份本地盤數(shù)據(jù)至OSS。
適用場(chǎng)景 | 特點(diǎn) | 費(fèi)用 |
適合大規(guī)模數(shù)據(jù)備份,尤其是需要低成本、高可靠性的存儲(chǔ)方案。更多OSS的特性,請(qǐng)參見OSS產(chǎn)品優(yōu)勢(shì)。 | 需要編寫腳本 | 收取OSS存儲(chǔ)費(fèi)。計(jì)費(fèi)詳情,請(qǐng)參見存儲(chǔ)費(fèi)用。 |
本方案是一個(gè)最簡(jiǎn)單的示例和基本思路,還存在一些局限性,需要您結(jié)合自身業(yè)務(wù)去做一些完善和補(bǔ)充。
例如,該方案每次都是全量備份,隨著時(shí)間推移會(huì)占用越來(lái)越多的存儲(chǔ)空間;直接將整個(gè)目錄打包成單個(gè)ZIP文件可能影響備份速度和存儲(chǔ)效率。在真實(shí)的業(yè)務(wù)場(chǎng)景中,需要結(jié)合自身業(yè)務(wù)做一些額外的策略,例如:
增量或差異備份:只備份自上次備份以來(lái)發(fā)生改變的數(shù)據(jù),更高效地利用存儲(chǔ)資源并加快備份速度。
分塊備份:將數(shù)據(jù)集分成多個(gè)小塊或根據(jù)目錄結(jié)構(gòu)、文件類型等邏輯進(jìn)行分組備份。
操作步驟
準(zhǔn)備工作。
已經(jīng)開通OSS服務(wù),并創(chuàng)建了OSS bucket。具體操作,請(qǐng)參見創(chuàng)建存儲(chǔ)空間。
已獲取OSS bucket名稱、OSS的endpoint以及待備份本地盤數(shù)據(jù)的存儲(chǔ)路徑。
登錄ECS實(shí)例。
安裝OSSutil工具并配置訪問(wèn)憑證。
重要下載OSSutil工具需要本地盤所屬的ECS實(shí)例已開通公網(wǎng)。如何為ECS實(shí)例開通公網(wǎng)?
安裝OSSutil工具。
sudo yum install unzip -y sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
配置OSSutil的訪問(wèn)憑證。
在用戶目錄下創(chuàng)建
.ossutilconfig
文件并配置憑證。sudo -i # 切換到root用戶(如果當(dāng)前用戶沒(méi)有sudo權(quán)限,則需要通過(guò)其他方式登錄或提權(quán)) cat <<EOF > /root/.ossutilconfig [Credentials] language=EN endpoint=YourEndpoint accessKeyID=YourAccessKeyId accessKeySecret=YourAccessKeySecret EOF
將
YourEndpoint
、YourAccessKeyId
和YourAccessKeySecret
替換為您的實(shí)際的信息。
實(shí)現(xiàn)定時(shí)備份。
安裝壓縮工具(本文以安裝
zip
為例)。sudo yum install zip
編寫備份腳本(假設(shè)腳本為backup_to_oss.sh)。
/path/to/your/local/data
:替換為本地盤數(shù)據(jù)目錄。your-bucket-name
:替換為您的OSS bucket名稱。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" # 確認(rèn)zip工具已安裝 if ! command -v zip &> /dev/null; then echo "zip command not found. Please install zip." >&2 exit 1 fi # 創(chuàng)建臨時(shí)備份目錄(如果不存在) mkdir -p "$BACKUP_TMP_DIR" # 檢查L(zhǎng)OCAL_DIR是否存在且非空 if [ -z "$(ls -A "$LOCAL_DIR")" ]; then echo "No files to backup in $LOCAL_DIR" | tee -a "$LOG_FILE" exit 0 fi # 打包需要備份的文件,并捕獲任何錯(cuò)誤輸出 (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 # 使用ossutil上傳ZIP文件 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" # 成功上傳后刪除本地ZIP文件 else echo "Failed to create ZIP archive." | tee -a "$LOG_FILE" fi # 記錄本次備份時(shí)間(即使備份失敗也更新,以避免重復(fù)上傳相同內(nèi)容) date +%s > "$SYNC_TIME_FILE" echo "Backup process completed." | tee -a "$LOG_FILE"
給腳本執(zhí)行權(quán)限并測(cè)試。
sudo chmod +x /home/backup_to_oss.sh ./backup_to_oss.sh
確保腳本運(yùn)行無(wú)誤,且數(shù)據(jù)能成功上傳至OSS。
執(zhí)行
crontab -e
打開crontab編輯器,添加一行來(lái)定時(shí)執(zhí)行您的備份腳本。例如每天凌晨2點(diǎn)執(zhí)行:0 2 * * * /home/backup_to_oss.sh
/home/backup_to_oss.sh
:替換為腳本實(shí)際的存放路徑。更多配置(按需設(shè)置)。
創(chuàng)建本地文件,并在文件中配置XML格式的生命周期規(guī)則。
vim OSSLifecycleConfig.xml
示例規(guī)則(請(qǐng)根據(jù)需求修改):bucket的test/路徑下的文件僅保留30天,超過(guò)30天的文件全部刪除。規(guī)則參數(shù)說(shuō)明,請(qǐng)參見lifecycle(生命周期)。
<?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>
ossutil讀取到生命周期配置添加到指定的Bucket。
ossutil lifecycle --method put oss://bucketname OSSLifecycleConfig.xml
bucketname
:替換為實(shí)際的OSS bucket名稱。
下載已備份數(shù)據(jù)
您可以通過(guò)OSS控制臺(tái)、命令行工具ossutil等,從OSS下載已經(jīng)備份的數(shù)據(jù)。具體操作,請(qǐng)參見簡(jiǎn)單下載。
方式三:定期備份至同實(shí)例的云盤或NAS
將本地盤數(shù)據(jù)通過(guò)ZIP包的方式定期備份至云盤或文件存儲(chǔ)NAS的指定路徑下。
適用場(chǎng)景 | 特點(diǎn) | 費(fèi)用 |
| 需要編寫腳本 |
|
本方案是一個(gè)最簡(jiǎn)單的示例和基本思路,還存在一些局限性,需要您結(jié)合自身業(yè)務(wù)去做一些完善和補(bǔ)充。
例如,該方案每次都是全量備份,隨著時(shí)間推移會(huì)占用越來(lái)越多的存儲(chǔ)空間;直接將整個(gè)目錄打包成單個(gè)ZIP文件可能影響備份速度和存儲(chǔ)效率。在真實(shí)的業(yè)務(wù)場(chǎng)景中,需要結(jié)合自身業(yè)務(wù)做一些額外的策略,例如:
增量或差異備份:只備份自上次備份以來(lái)發(fā)生改變的數(shù)據(jù),更高效地利用存儲(chǔ)資源并加快備份速度。
分塊備份:將數(shù)據(jù)集分成多個(gè)小塊或根據(jù)目錄結(jié)構(gòu)、文件類型等邏輯進(jìn)行分組備份。
操作步驟
準(zhǔn)備工作。
為本地盤所屬實(shí)例已新建一個(gè)云盤(數(shù)據(jù)盤)并完成掛載和初始化;或已掛載文件系統(tǒng)NAS。
具體操作,請(qǐng)參見快速創(chuàng)建并使用云盤或創(chuàng)建文件系統(tǒng)NAS并掛載至ECS。
獲取云盤或文件系統(tǒng)NAS的掛載路徑、待備份本地盤數(shù)據(jù)的存儲(chǔ)路徑。
設(shè)置定時(shí)備份。
登錄ECS實(shí)例。
安裝ZIP工具(下文以Alibaba Cloud Linux為例)。
sudo yum install zip
編寫備份腳本(假設(shè)路徑為/home/backup_script.sh)。
執(zhí)行以下命令編寫腳本,并保存。
vim /home/backup_script.sh
/path/to/local_disk/
:替換為待備份的本地盤數(shù)據(jù)的絕對(duì)路徑。/path/to/backup/
:替換為數(shù)據(jù)要備份的目標(biāo)路徑。
#!/bin/bash # 配置變量 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" # 確保ZIP工具已安裝 if ! command -v zip &> /dev/null; then echo "Error: zip command not found. Please install zip." >&2 exit 1 fi # 執(zhí)行備份 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 # 清理過(guò)期備份(示例:保留最近30天的備份) # 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"
保存腳本,并給予執(zhí)行權(quán)限。
sudo chmod +x /home/backup_script.sh
/home/backup_script.sh
:替換為腳本實(shí)際的存放路徑。執(zhí)行
crontab -e
打開crontab編輯器,添加一行來(lái)定時(shí)執(zhí)行您的備份腳本。例如每天凌晨2點(diǎn)執(zhí)行:0 2 * * * /home/backup_script.sh
/home/backup_script.sh
:替換為腳本實(shí)際的存放路徑。
下載已備份數(shù)據(jù)
數(shù)據(jù)備份在云盤:具體操作,可參見上傳或下載文件。
數(shù)據(jù)備份在NAS:具體操作,可參見將NAS數(shù)據(jù)遷移至本地。
相關(guān)操作
將本地盤數(shù)據(jù)遷移到其他ECS實(shí)例
您可以將單臺(tái)或多臺(tái)本地盤實(shí)例整體數(shù)據(jù)一鍵遷移到其他ECS實(shí)例,存儲(chǔ)至該實(shí)例的云盤,完整備份本地盤實(shí)例的數(shù)據(jù)。具體操作,請(qǐng)參見源服務(wù)器遷移至目標(biāo)實(shí)例。
本地盤發(fā)生損壞后的處理
如果本地盤發(fā)生損壞,阿里云會(huì)觸發(fā)系統(tǒng)事件,并及時(shí)給您發(fā)送通知、應(yīng)對(duì)措施和事件周期等信息。您可以根據(jù)場(chǎng)景進(jìn)行運(yùn)維。更多信息,請(qǐng)參見本地盤實(shí)例運(yùn)維場(chǎng)景和系統(tǒng)事件。