rsync backup full system

可以參考這裡.

# backup
sudo rsync -aAXv --delete --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* --exclude=/media/* --exclude="swapfile" --exclude="lost+found" --exclude=".cache" --exclude="Downloads" --exclude=".VirtualBoxVMs" --exclude=".ecryptfs" --exclude="vmware" /source /destination

# restore
sudo rsync -aAXv --delete --exclude="lost+found" /backup /system

選項
-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls                  preserve ACLs (implies --perms)
-X, --xattrs                preserve extended attributes
-x, --one-file-system       don't cross filesystem boundaries
-v, --verbose               increase verbosity
--delete                delete extraneous files from destination dirs
--partial    keep partially transferred files
-–append     append data onto shorter files
--progress   show progress during transfer   This gives a bored user something to watch.....
--include
--exclude
-e "ssh -p 1234"  當port不是預設22時

備份實例
#!/bin/bash

#ntpdate time.stdtime.gov.tw
getDate=`date +'%Y-%m-%d'`
syncpath="/mnt/sda5/"

if [ -d $syncpath$getDate ]; then
        echo Already backup today!
        exit 0
else
        mkdir $syncpath$getDate 
        rsync -aAXv --delete --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* --exclude=/media/* --exclude="swapfile" --exclude="lost+found" --exclude=".cache" --exclude="/srv/dev-disk-by-id-md-name-openmediavault.local-0" / $syncpath$getDate
fi

遠端備份
rsync 參數 / user@IP:/path/

實例
rsync -aAXv --progress --partial --append --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/mnt/*","/lost+found"} / user@IP:path/



用tar備份
tar -zcvpf ~/backup.tar.gz --exclude=~/backup.tar.gz --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/run/* --exclude=/mnt/* --exclude=/media/* --exclude="swapfile" --exclude="lost+found" /

還原 
tar -xvpzf /backup.tgz -C / 
mkdir /dev /proc /sys /tmp /run /mnt /media /lost+found

鳥哥的網站只有不壓以下目錄, 在raspbian測試OK
tar --exclude=/proc --exclude=/mnt --exclude=/tmp --exclude=~/backup.tar.gz -zcvpf ~/backup.tar.gz /
鳥哥的還原
tar -zxvf backup.tar.gz

參考
https://help.ubuntu.com/community/BackupYourSystem/TAR


另外一種用tar的做法  
#備份
su -
cd /
sudo tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system /

# 可能在tar後面要加上這些參數 --acls --xattrs --numeric-owner

#還原
cd /
sudo tar -xvpzf /path/to/backup.tar.gz -C /restore/location --numeric-owner

這中間還需要調整新硬碟的UUID還有分割.

參數說明
tar - 是建立存檔的命令。緊接著由每個字母修改,下面將對每個字母進行說明。

c - 建立新的備份存檔。

v - 詳細模式,tar將列印它在螢幕上所做的事情。

p - 保留存檔中放置的檔案的許可權以便以後恢復。

z - 使用'gzip'壓縮備份檔案以使其更小。

f <filename> - 指定儲存備份的位置,backup.tar.gz是此示例中使用的檔名。它將儲存在當前工作目錄中,即使用cd命令時設定的目錄。

--exclude = /example/path - 此模型後面的選項指示tar 不要備份哪些目錄。我們不想備份所有內容,因為某些目錄不是很有用。第一個排除規則指示tar不要自行備份,這對於避免操作期間的錯誤很重要。

--one-file-system - 不要在不同的檔案系統上包含檔案。如果您希望其他檔案系統(例如/ home分割槽或安裝在/ media備份中的外部介質),您需要單獨備份它們,或省略此標誌。如果省略此標誌,則需要新增幾個--exclude =引數以避免您不想要的檔案系統。這些將是root中的/proc,/sys,/mnt,/media,/run和/dev目錄。/proc和/sys是虛擬檔案系統,它將視窗提供給正在執行的核心的變數,因此您不希望嘗試備份或還原它們。 /dev是一個tmpfs,其內容由udev動態建立和刪除,因此您也不想備份或恢復它。同樣,/run是一個tmpfs,它儲存有關正在執行的系統的不需要備份的變數。

x - 告訴tar立即提取f選項指定的檔案。在這種情況下,存檔是backup.tar.gz

-C <directory> - 此選項告訴tar在解壓縮之前更改為特定目錄。在此示例中,我們將還原到根(/mnt)目錄。

--numeric-owner - 此選項告訴tar恢復歸檔中檔案的數字所有者,而不是匹配要還原的環境中的任何使用者名稱。這是因為您要恢復的系統中的使用者ID:s不一定與您用於恢復的系統匹配(例如,Live CD)。

IconsPage /warning.png 這將覆蓋指定裝載中的每個檔案和目錄,並使用存檔中的檔案和目錄。歸檔後建立的任何檔案都不會儲存在歸檔中,因此將保持不變允許恢復需要完成的時間。提取完成後,您可能需要重新建立原始存檔中未包含的目錄,因為您使用--exclude將其排除。這不適用於--one-file-system排除的檔案系統。這可以使用以下命令完成:

mkdir /proc /sys /mnt /media 
完成後,重啟並在進行備份時將所有內容恢復到系統狀態。
再另一種的dd to ftp
先ftp到主機上
ftp 
> open 192.168.1.1
然後輸入
> put "|dd if=/dev/sda bs=4M | gzip" backup.gz
耐心等待....

還原
一樣先連上主機, 然後輸入
> get backup.gz "| gunzip | dd of=/dev/sda"

參考算 https://help.ubuntu.com/community/BackupYourSystem/TAR
測了一下用這個不會出現tar error

# 備份
# cd / # THIS CD IS IMPORTANT THE FOLLOWING LONG COMMAND IS RUN FROM /
# tar -cvpzf backup.tar.gz \
--exclude=/backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/run \ 
--exclude=/media \ 
--exclude=/var/log \
--exclude=/var/cache/apt/archives \
--exclude=/usr/src/linux-headers* \ 
--exclude=/home/*/.gvfs \
--exclude=/home/*/.cache \ 
--exclude=/home/*/.local/share/Trash /

# 還原 用live usb開機, 假設backup.tar.gz在usb裡.
# ls /media
# tar -xvpzf /path/to/backup.tar.gz -C /media/whatever --numeric-owner
# mkdir /proc /sys /mnt /media 
# sudo -s
# for f in dev dev/pts proc ; do mount --bind /$f /media/whatever/$f ; done
# chroot /media/whatever
# dpkg-reconfigure grub-pc
您將看到一個選單,詢問您 grub 應安裝在哪個磁碟機上。選擇電腦將從中啟動的任何磁碟機。

發佈留言