[讨论] tar增量备份 记录已删除文件的方法

sh/bash/dash/ksh/zsh等Shell脚本
回复
zgalvin
帖子: 22
注册时间: 2010-02-06 14:34

[讨论] tar增量备份 记录已删除文件的方法

#1

帖子 zgalvin » 2012-02-18 18:03

用tar做增量备份很方便。
但是对于已经删除的文件,增量备份不会记录。只记录新增的和修改的文件。

可不可以用

代码: 全选

find $Source -print > index.txt 
每次做增量备份的时候顺便导出最新的文件列表到index.txt

需要恢复的时候先请空$Source目录

代码: 全选

tar -xvpzf backup.tar.gz $Source -PT index.txt
tar -xvpzf backup-1.tar.gz $Source -PT index.txt 
tar -xvpzf backup-2.tar.gz $Source -PT index.txt
这样来剔除最初备份的时候存在,但是后来删除了文件。


或者有没有其他的备份方法可以满足:
1 增量/差异备份(记录增加,修改,删除
2 压缩
3 可以选择在备份的时候要忽略的目录

新手还望大家多多指教


楼下说没看明白,我再说详细点--关于增量备份
比如我有一个backup目录要备份
里面有a b c三个文件。
首先 我用

代码: 全选

tar -g snapshot -cvpzf backup.tar.gz backup
做一个完全备份,backup.tar.gz 里面包含a b c
然后我新建一个文件 d ,修改文件 c ,删除文件b
这时候我的目录下有 a c d三个文件。
再做一个增量备份

代码: 全选

tar -g snapshot -cvpzf backup-1.tar.gz backup
这时候backup-1.tar.gz里面就会有文件 c d 的备份。

假如我现在不小心丢失了backup目录,恢复的时候按顺序解压缩每个备份包,就可以还原。
但是还原后目录里面有 a b c d这4个文件,其中 b 早就已经被我删掉了,不应该出现的。这就是tar做增量备份的一个缺陷。
[/color]
上次由 zgalvin 在 2012-02-18 20:34,总共编辑 1 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: [讨论] tar增量备份 记录已删除文件的方法

#2

帖子 eexpress » 2012-02-18 18:19

● type t.u
t.u 是 `tar uPvf ' 的别名

我只会这个。
没明白你做增量的具体含义。你可以试试git做备份。
● 鸣学
头像
lilydjwg
论坛版主
帖子: 4250
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: [讨论] tar增量备份 记录已删除文件的方法

#3

帖子 lilydjwg » 2012-02-18 23:00

eexpress 写了:● type t.u
t.u 是 `tar uPvf ' 的别名

我只会这个。
没明白你做增量的具体含义。你可以试试git做备份。
git 做备份连 7z 都不如,系统备份的话是绝对绝对要保留权限信息的。

要记录删除的文件很简单,把现在的文件列表和之前的文件列表对比下就可以了。所以需要在每个 tar 里保留文件列表。另外,squasfs 应该会比 tar 备份好用。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: [讨论] tar增量备份 记录已删除文件的方法

#4

帖子 eexpress » 2012-02-18 23:05

我没看出他这是系统备份。你咋看出来的?
● 鸣学
头像
dukelec
帖子: 410
注册时间: 2010-08-26 22:20
系统: Gentoo
来自: Canton

Re: [讨论] tar增量备份 记录已删除文件的方法

#6

帖子 dukelec » 2012-02-28 16:13

一直糾結於離綫數據備份。。。 樓主的方法生成的 index.txt 太大,最好還是想辦法只記錄已刪除文件的列表。

在想是否可用 inotify 監控文件改變,然後分別輸出記錄到不同的列表,最好用三個:新建、修改、刪除,最後再用腳本打包處理等。
头像
dukelec
帖子: 410
注册时间: 2010-08-26 22:20
系统: Gentoo
来自: Canton

Re: [讨论] tar增量备份 记录已删除文件的方法

#7

帖子 dukelec » 2012-02-28 16:57

又試了試,發現 tar 自身是可以同步刪除的文件的,只要解壓包的時候也帶上 -g 參數即可,指定的是生成此 tar 包後的列表文件。

如果要雙向同步的話,需要在各自都生成相應的 list 文件,解包同步的時候指定對方的 list 文件,同步後再更新本地 list 文件。

現在的問題是每次更新 list 文件的時候都會生成一個 tar 包,而此 tar 包是無用的,我不想讓它生成,不知道可不可以,當然輸出重定向到 /dev/null 也是可以的,但畢竟會慢一些。
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: [讨论] tar增量备份 记录已删除文件的方法

#8

帖子 millenniumdark » 2012-05-04 18:58

dukelec 写了:又試了試,發現 tar 自身是可以同步刪除的文件的,只要解壓包的時候也帶上 -g 參數即可,指定的是生成此 tar 包後的列表文件。

如果要雙向同步的話,需要在各自都生成相應的 list 文件,解包同步的時候指定對方的 list 文件,同步後再更新本地 list 文件。

現在的問題是每次更新 list 文件的時候都會生成一個 tar 包,而此 tar 包是無用的,我不想讓它生成,不知道可不可以,當然輸出重定向到 /dev/null 也是可以的,但畢竟會慢一些。
info tar裏有寫的,解壓恢復時 -g /dev/null 就可以。
回复