新聞中心
Linux下數(shù)據(jù)備份命令scp、rsync和后臺運行
scp和rsync 均可實現(xiàn)文件的復(fù)制,但相比較,scp占用系統(tǒng)資源較小,rsync速度較快。當(dāng)小文件眾多時,rsync會導(dǎo)致硬盤I/O非常高,而scp基本不影響系統(tǒng)正常使用。可根據(jù)需要這倆選其一實現(xiàn)文件復(fù)制。
創(chuàng)新互聯(lián)公司主營雁塔網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),雁塔h5重慶小程序開發(fā)搭建,雁塔網(wǎng)站營銷推廣歡迎雁塔等地區(qū)企業(yè)咨詢
scp 是secure copy的縮寫,scp是Linux系統(tǒng)下基于ssh登錄進行安全的遠程文件拷貝命令。
可以實現(xiàn)本地文件復(fù)制到遠程服務(wù)器,也可以將遠程文件復(fù)制到本地。
rsync 是remote sync的縮寫。使用rsync備份數(shù)據(jù)時,不會直接覆蓋以前的數(shù)據(jù)(如果數(shù)據(jù)已經(jīng)存在),而是先判斷已存在的數(shù)據(jù)和新數(shù)據(jù)的差異(默認規(guī)則是文件大小或修改時間有差異),只有數(shù)據(jù)不相同時才會把不相同的部分覆蓋。在僅作增量數(shù)據(jù)的copy時比scp靈活。
一般CentOS默認安裝rsync,若使用 rsync -v 提示找不到命令,可使用 yum install -y rsync 安裝。
單個冒號和雙冒號的區(qū)別 :使用rsync在遠程傳輸數(shù)據(jù)前,是需要進行登陸認證的,這個過程可使用ssh協(xié)議也可以使用rsync協(xié)議完成。單冒號(:)使用的是ssh協(xié)議;雙冒號(::)使用的是rsync協(xié)議。
默認情況下,rsync只確保源文件的所有內(nèi)容(明確排除的文件除外)都復(fù)制到目標(biāo)目錄。它不會使兩個目錄保持不同,并且不會刪除文件。如果要使目標(biāo)目錄成為源目錄的鏡像副本,則使用--delete選項。可刪除只存在目標(biāo)目錄,不存在于源目錄的文件。
增量備份算是一個經(jīng)常使用的場景了。兩臺服務(wù)器之間進行文件定期備份,無需所有文件都copy一遍,僅復(fù)制有變動的文件。
具體做法是,第一次同步是全量備份,所有文件在基準(zhǔn)目錄里面同步一份。以后每一次同步都是增量備份,只同步源目錄與基準(zhǔn)目錄之間有變動的部分,將這部分保存在一個新的目標(biāo)目錄。這個新的目標(biāo)目錄之中,也是包含所有文件,但實際上,只有那些變動過的文件是存在于該目錄,其他沒有變動的文件都是指向基準(zhǔn)目錄文件的硬鏈接。
--link-dest 參數(shù)用來指定同步時的基準(zhǔn)目錄。
上面命令中, --link-dest 參數(shù)指定基準(zhǔn)目錄 /compare/path ,然后源目錄 /source/path 跟基準(zhǔn)目錄進行比較,找出變動的文件,將它們拷貝到目標(biāo)目錄 /target/path 。那些沒變動的文件則會生成硬鏈接。這個命令的第一次備份時是全量備份,后面就都是增量備份了。
一般服務(wù)器之間復(fù)制文件都比較大,為防止誤操作,最好在后臺運行。但因為需要和遠程服務(wù)器之間的ssh通訊多是需要密碼的,所以不能直接使用nohup 放置于后臺。無論是scp還是rsync都可操作如下:
后臺和前臺任務(wù)的切換
scp不支持斷點續(xù)傳,掛起scp進程可能導(dǎo)致數(shù)據(jù)缺失。傾向于使用rsync。
如果有其他任務(wù)需要使用nohup后臺運行,但執(zhí)行時卻忘記了使用nohup,也可參照此方法進行設(shè)置。
參考:1. Linux之scp命令及后臺運行scp
Linux下磁帶管理命令
為什么備份?
一個備份計劃對定期備份文件來說很有必要,如果你寧愿選擇不備份,那么丟失重要數(shù)據(jù)的風(fēng)險會大大增加。有了備份,你就有了從磁盤故障中恢復(fù)的能力。備份還可以幫助你抵御:意外的文件刪除/文件或文件系統(tǒng)損壞/服務(wù)器完全毀壞,包括由于火災(zāi)或其他問題導(dǎo)致的同盤備份毀壞、硬盤或 SSD 崩潰、病毒或勒索軟件破壞或刪除文件、你可以使用磁帶歸檔備份整個服務(wù)器并將其離線存儲。
理解磁帶文件標(biāo)記和塊大小
每個磁帶設(shè)備能存儲多個備份文件。磁帶備份文件通過 cpio,tar,dd 等命令創(chuàng)建。同時,磁帶設(shè)備可以由多種程序打開、寫入數(shù)據(jù)、及關(guān)閉。你可以存儲若干備份(磁帶文件)到一個物理磁帶上。在每個磁帶文件之間有個“磁帶文件標(biāo)記”。這用來指示一個物理磁帶上磁帶文件的結(jié)尾以及另一個文件的開始。你需要使用 mt 命令來定位磁帶(快進,倒帶和標(biāo)記)。
磁帶上的數(shù)據(jù)是如何存儲的
所有的數(shù)據(jù)使用 tar 以連續(xù)磁帶存儲格式連續(xù)地存儲。第一個磁帶歸檔會從磁帶的物理開始端開始存儲(tar #0)。接下來的就是 tar #1,以此類推。
Unix 上的磁帶設(shè)備名
/dev/rmt/0 或 /dev/rmt/1 或 /dev/rmt/[0-127] :Unix 上的常規(guī)磁帶設(shè)備名。磁帶自動倒回。
/dev/rmt/0n :以無倒回為特征,換言之,磁帶使用之后,停留在當(dāng)前狀態(tài)等待下個命令。
/dev/rmt/0b :使用磁帶接口,也就是 BSD 的行為。各種類型的操作系統(tǒng)比如 AIX,Windows,Linux,F(xiàn)reeBSD 等的行為更有可讀性。
/dev/rmt/0l :設(shè)置密度為低。
/dev/rmt/0m :設(shè)置密度為中。
/dev/rmt/0u :設(shè)置密度為高。
/dev/rmt/0c :設(shè)置密度為壓縮。
/dev/st[0-9] :Linux 特定 SCSI 磁帶設(shè)備名。
/dev/sa[0-9] :FreeBSD 特定 SCSI 磁帶設(shè)備名。
/dev/esa0 :FreeBSD 特定 SCSI 磁帶設(shè)備名,在關(guān)閉時彈出(如果可以的話)。
磁帶設(shè)備名示例
/dev/rmt/1cn 指明正在使用 unity 1,壓縮密度,無倒回。
/dev/rmt/0hb 指明正在使用 unity 0,高密度,BSD 行為。
Linux 上的自動倒回 SCSI 磁帶設(shè)備名:/dev/st0
Linux 上的無倒回 SCSI 磁帶設(shè)備名:/dev/nst0
FreeBSD 上的自動倒回 SCSI 磁帶設(shè)備名:/dev/sa0
FreeBSD 上的無倒回 SCSI 磁帶設(shè)備名:/dev/nsa0
如何列出已安裝的 scsi 磁帶設(shè)備?
輸入下列命令:
### Linux(更多信息參閱 man) ###
lsscsi
lsscsi -g
### IBM AIX ###
lsdev -Cc tape
lsdev -Cc adsm
lscfg -vl rmt*
### Solaris Unix ###
cfgadm –a
cfgadm -al
luxadm probe
iostat -En
### HP-UX Unix ###
ioscan Cf
ioscan -funC tape
ioscan -fnC tape
ioscan -kfC tape
mt 命令示例
在 Linux 和類 Unix 系統(tǒng)上,mt 命令用來控制磁帶驅(qū)動器的操作,比如查看狀態(tài)或查找磁帶上的文件或?qū)懭氪艓Э刂茦?biāo)記。下列大多數(shù)命令需要作為 root 用戶執(zhí)行。語法如下:
mt -f /tape/device/name operation
設(shè)置環(huán)境
你可以設(shè)置 TAPE shell 變量。這是磁帶驅(qū)動器的路徑名。在 FreeBSD 上默認的(如果變量沒有設(shè)置,而不是 null)是 /dev/nsa0。可以通過 mt 命令的 -f 參數(shù)傳遞變量覆蓋它,就像下面解釋的那樣。
### 添加到你的 shell 配置文件 ###
TAPE=/dev/st1 #Linux
TAPE=/dev/rmt/2 #Unix
TAPE=/dev/nsa3 #FreeBSD
export TAPE
1:顯示磁帶/驅(qū)動器狀態(tài)
mt status? ### Use default
mt -f /dev/rmt/0? status ### Unix
mt -f /dev/st0 status ### Linux
mt -f /dev/nsa0 status ### FreeBSD
mt -f /dev/rmt/1 status ### Unix unity 1 也就是 tape device no. 1
你可以像下面一樣使用 shell 循環(huán)語句遍歷一個系統(tǒng)并定位其所有的磁帶驅(qū)動器:
for d in 0 1 2 3 4 5
do
mt -f "/dev/rmt/$xhus94b" status
done
2:倒帶
mt rew
mt rewind
mt -f /dev/mt/0 rewind
mt -f /dev/st0 rewind
3:彈出磁帶
mt off
mt offline
mt eject
mt -f /dev/mt/0 off
mt -f /dev/st0 eject
4:擦除磁帶(倒帶,在支持的情況下卸載磁帶)
mt erase
mt -f /dev/st0 erase? #Linux
mt -f /dev/rmt/0 erase #Unix
5:張緊磁帶盒
如果磁帶在讀取時發(fā)生錯誤,你重新張緊磁帶,清潔磁帶驅(qū)動器,像下面這樣再試一次:
mt retension
mt -f /dev/rmt/1 retension #Unix
mt -f /dev/st0 retension #Linux
6:在磁帶當(dāng)前位置寫入 EOF 標(biāo)記
mt eof
mt weof
mt -f /dev/st0 eof
7:將磁帶前進指定的文件標(biāo)記數(shù)目,即跳過指定個 EOF 標(biāo)記
磁帶定位在下一個文件的第一個塊,即磁帶會定位在下一區(qū)域的第一個塊(見圖01):
mt fsf
mt -f /dev/rmt/0 fsf
mt -f /dev/rmt/1 fsf 1 #go 1 forward file/tape (see fig.01)
8:將磁帶后退指定的文件標(biāo)記數(shù)目,即倒帶指定個 EOF 標(biāo)記
磁帶定位在下一個文件的第一個塊,即磁帶會定位在 EOF 標(biāo)記之后(見圖01):
mt bsf
mt -f /dev/rmt/1 bsf
mt -f /dev/rmt/1 bsf 1 #go 1 backward file/tape (see fig.01)
這里是磁帶定位命令列表:
fsf? ? 前進指定的文件標(biāo)記數(shù)目。磁帶定位在下一個文件的第一塊。
fsfm? 前進指定的文件標(biāo)記數(shù)目。磁帶定位在前一文件的最后一塊。
bsf? ? 后退指定的文件標(biāo)記數(shù)目。磁帶定位在前一文件的最后一塊。
bsfm? 后退指定的文件標(biāo)記數(shù)目。磁帶定位在下一個文件的第一塊。
asf? ? 磁帶定位在指定文件標(biāo)記數(shù)目的開始位置。定位通過先倒帶,再前進指定的文件標(biāo)記數(shù)目來實現(xiàn)。
fsr? ? 前進指定的記錄數(shù)。
bsr? ? 后退指定的記錄數(shù)。
fss? ? (SCSI tapes)前進指定的 setmarks。
bss? ? (SCSI tapes)后退指定的 setmarks。
基本備份命令
讓我們來看看備份和恢復(fù)命令。
9:備份目錄(tar 格式)
tar cvf /dev/rmt/0n /etc
tar cvf /dev/st0 /etc
10:恢復(fù)目錄(tar 格式)
tar xvf /dev/rmt/0n -C /path/to/restore
tar xvf /dev/st0 -C /tmp
11:列出或檢查磁帶內(nèi)容(tar 格式)
mt -f /dev/st0 rewind; dd if=/dev/st0 of=-
### tar 格式 ###
tar tvf {DEVICE} {Directory-FileName}
tar tvf /dev/st0
tar tvf /dev/st0 desktop
tar tvf /dev/rmt/0 foo list.txt
12:使用 dump 或 ufsdump 備份分區(qū)
### Unix 備份 c0t0d0s2 分區(qū) ###
ufsdump 0uf /dev/rmt/0? /dev/rdsk/c0t0d0s2
### Linux 備份 /home 分區(qū) ###
dump 0uf /dev/nst0 /dev/sda5
dump 0uf /dev/nst0 /home
### FreeBSD 備份 /usr 分區(qū) ###
dump -0aL -b64 -f /dev/nsa0 /usr
13:使用 ufsrestore 或 restore 恢復(fù)分區(qū)
### Unix ###
ufsrestore xf /dev/rmt/0
### Unix 交互式恢復(fù) ###
ufsrestore if /dev/rmt/0
### Linux ###
restore rf /dev/nst0
### 從磁帶媒介上的第6個備份交互式恢復(fù) ###
restore isf 6 /dev/nst0
### FreeBSD 恢復(fù) ufsdump 格式 ###
restore -i -f /dev/nsa0
14:從磁帶開頭開始寫入(見圖02)
### 這會覆蓋磁帶上的所有數(shù)據(jù) ###
mt -f /dev/st1 rewind
### 備份 home ###
tar cvf /dev/st1 /home
### 離線并卸載磁帶 ###
mt -f /dev/st0 offline
從磁帶開頭開始恢復(fù):
mt -f /dev/st0 rewind
tar xvf /dev/st0
mt -f /dev/st0 offline
15:從最后一個 tar 后開始寫入(見圖02)
### 這會保留之前寫入的數(shù)據(jù) ###
mt -f /dev/st1 eom
### 備份 home ###
tar cvf /dev/st1 /home
### 卸載 ###
mt -f /dev/st0 offline
16:從 tar number 2 后開始寫入(見圖02)
### 在 tar number 2 之后寫入(應(yīng)該是 2+1)###
mt -f /dev/st0 asf 3
tar cvf /dev/st0 /usr
### asf 等效于 fsf ###
mt -f /dev/sf0 rewind
mt -f /dev/st0 fsf 2
從 tar number 2 恢復(fù) tar:
mt -f /dev/st0 asf 3
tar xvf /dev/st0
mt -f /dev/st0 offline
關(guān)于第三方備份工具
Linux 和類Unix系統(tǒng)都提供了許多第三方工具,可以用來安排備份,包括磁帶備份在內(nèi),如:
Amanda
Bacula
rsync
duplicity
rsnapshot
Linux dump命令
Linux dump命令用于備份文件系統(tǒng)。
dump為備份工具程序,可將目錄或整個文件系統(tǒng)備份至指定的設(shè)備,或備份成一個大文件。
語法:
dump[-cnu][-0123456789][-b
區(qū)塊大小][-B區(qū)塊數(shù)目][-d密度][-f設(shè)備名稱][-h層級][-s磁帶長度][-T日期][目錄或文件系統(tǒng)]或dump[-wW]
參數(shù):
-0123456789 備份的層級
-b區(qū)塊大小 指定區(qū)塊的大小,單位為KB
-B區(qū)塊數(shù)目 指定備份卷冊的區(qū)塊數(shù)目
-c 修改備份磁帶預(yù)設(shè)的密度與容量
-d密度 設(shè)置磁帶的密度,單位為BPI
-f設(shè)備名稱 指定備份設(shè)備
-h層級 當(dāng)備份層級等于或大于指定的層級時,將不備份用戶標(biāo)示為nodump的文件
-n 當(dāng)備份工作需要管理員介入時,向所有operator群組中的使用者發(fā)出通知
-s磁帶長度 備份磁帶的長度,單位為英尺
-T日期 指定開始備份的時間與日期
-u 備份完畢后,在/etc/dumpdates中記錄備份的文件系統(tǒng),層級,日期與時間等
-w 與-W類似,但僅顯示需要備份的文件
-W 顯示需要備份的文件及其最后一次備份的層級,時間與日期。
Linux命令:tar
原單詞 tar命令最初的設(shè)計目的是將文件備份到磁帶上(tape archive),因而得名tar
實物長這樣
tar 命令是linux系統(tǒng)中常用的 壓縮文件 和 解壓縮文件命令
tar 命令的參數(shù) 異常之多,咱們只學(xué)習(xí)滿足 壓縮文件 和 解壓縮文件 命令的參數(shù)就可以了
mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);"工作中應(yīng)用于安裝軟件,搭建應(yīng)用,部署環(huán)境/mark
舉例: 將root目錄下的 adir目錄和a.txt文件 壓縮為 test.tar.gz
注意是大寫C
如果 不使用-C參數(shù) 則默認解壓至當(dāng)前工作目錄
舉例: 將 test.tar.gz 壓縮文件解壓到/root目錄
-c 建立新的備份文件。
-x 從備份文件中還原文件。
-v 顯示指令執(zhí)行過程。
-f 指定備份文件。
-z 通過gzip指令處理備份文件。(如果解壓文件后綴是.tar,沒有.gz則不需要使用-z參數(shù))
-C 指定解壓到的目錄
使用xshell連接linux
在root 目錄下 新建 tarTest目錄
進入tarTest目錄
壓縮 /root/lnTest文件夾 和 /root/Centos-7.repo 文件 到 /root/tarTest目錄下,壓縮文件名為 test.tar.gz
進入/root/tarTest目錄
解壓test.tar.gz到當(dāng)前目錄(/root/tarTest)
解壓test.tar.gz到/root/rmTest目錄
當(dāng)前文章:linux磁帶備份命令 linux 磁帶備份
瀏覽地址:http://www.ef60e0e.cn/article/doshpds.html