最近想着给wordpress的docker搞增量备份,但是mac的tar的感觉就是阉割版的,不支持-g参数,同样,mac下很多命令跟linux还是有区别的,因此首先需要解决tar的问题。于是从GNU的网站下面(链接)下tar的源码来编译,不用说,照例
./configure
make
还好一切顺利,找到编译好的tar二进制包,为避免跟系统的tar冲突,影响其它功能,把这个tar改名为gnutar,试验了一下,支持-g参数,为了保证每次备份的文件名不一样,所以用时间分开。
export timetag=$(date -u "+%Y_%m_%d_%H_%M_%S")
#-u是采用utc时间,确保时间统一,美国又是DST,还几个时区,local时间不一致容易引发混乱
gnutar -g snapshot -zcpf WordPress_$timetag.tar.gz 'Source Directory'
另外有个最大的坑的就是,tar解压的时候,同样需要指定-g snapshot,否则结果不对,指令如下,我这里为了保存权限,所以加了-p,正常不需要
tar -g snapshot -zxpf backup.tar.gz
恢复的时候按照时间顺序恢复即可
很多博客都没提到这一点,果然,很多帖子你抄我,我抄你,也不亲自试一下,然后就一传十,十传百,尤其是中文博客圈子受众相对更窄,错误就更容易在中文范围里放大,唉,害了我搞了一个晚上
同样mac下,很多与linux不同的指令,都可以通过从源码编译解决,反正我是不太喜欢Homebrew这种包管理软件,系统一升级就歇菜了,还搞了一串乱七八糟的目录,反正我这种有着操作系统精神洁癖的人是不能忍受的^_^,所谓操作系统精神洁癖就是不必要的软件不装,要是指令不存在的话,宁可自己编译,也不用那种非官方的package管理器提供的东西。
目前亲测,几个linux下的package可以在mac下直接编译并运行
- p7zip (7zip)
- smartmontools
- sed
- sshpass
毕竟作为unix系传下来的mac os,很多指令还是可以直接用的,没必要大动干戈,把整个shell里的指令都换掉,部分功能不全的指令,我们直接用gnu的替代就可以了。