Re: [问题] shellscript tar问题

楼主: raynoz (Rayoz)   2021-08-05 21:35:35
不好意思我又来了...
这几天遇到一些问题想破头只想出一点东西 决定还是来跟各位求助..
因为刚学script 是超级菜鸡 写得很杂乱请大家见谅
#!/bin/bash
last_month=$(date -d "$(date +%Y%m)01 last month" +%Y%m)
Source=/home/ray/photo
dest=/home/ray/photo2
sourcefilesize=$(ls -l /home/ray/photo/$last_month* | awk '{ SUM += $5} END {
print SUM}')
#destfilesize=$(ls -l /home/ray/photo3/$last_month* | awk '{ SUM += $5} END {
print SUM}')
today=$(date +"%Y-%m-%d")
zipname=$TODAY.tar.gz
zipfilename=${last_month:2}
verifydest=/home/ray/photo3
cd /home/ray/photo
file=$(ls -d $last_month*)
tar -zcvPf /home/ray/photo2/$zipfilename.tar.gz $file
tar -zxvf /home/ray/photo2/$zipfilename.tar.gz -C /home/ray/photo3
destfilesize=$(ls -l /NAS/Raytest3/$last_month* | awk '{ SUM += $5} END {
print SUM}')
if [ $sourcefilesize == $destfilesize ];
then
rm -rf $Source/$file
else
exit
fi
if [ $sourcefilesize == $destfilesize ];
then
rm -rf $verifydest/$file
else
exit
fi
流程是这样的
首先每个月1号将/home/ray/photo 上个月份的所有资料打包放到/home/ray/photo2 并命
名为2107.tar.gz(8月1号执行)
再将2107.tar.gz解包将资料放到/home/ray/photo3
然后比对/home/ray/photo 跟 /home/ray/photo3两边档案大小(验证是否正常) 如果OK就
把他们的资料删掉
目前我测试时有准备两个自建的资料夹20210701 & 20210702 放到/home/ray/photo
将20210701 & 20210702 打包命名2107.tar.gz 放到/home/ray/photo2
再将/home/ray/photo2的2107.tar.gz解包放到/home/ray/photo3
比对/home/ray/photo跟/home/ray/photo3 的20210701 & 20210702档案大小是否一样
确定一样并删除/home/ray/photo的 20210701 & 20210702
但是/home/ray/photo3的20210701 & 20210702 只有删掉2021072
删除/home/ray/photo3的时候只删掉20210702而20210702还在没有删掉
不知道问题在哪里...
作者: observer0117 (ob)   2021-08-05 22:08:00
备份的话,不考虑rsync?比对档案的话,diff或md5也许比较好?tar可以直接pipe跨档案系统/目录,不需要暂存盘
楼主: raynoz (Rayoz)   2021-08-06 08:04:00
感谢O大建议 我很需要XD
作者: rickieyang (Rickie Yang)   2021-08-06 10:11:00
rm -rf $verifydest/$file 会变成 rm -rf 3/file1file2 第二个档案没有 3/ 路径. 你可以 cd 先 cd 再rm
作者: goldie (阿良)   2021-08-06 12:00:00
建议先装个 shellcheck 把语法修一修看到 rm -rf 后面的变量没 quoting 实在是冒冷汗
楼主: raynoz (Rayoz)   2021-08-06 14:06:00
感谢两位 !!
作者: Gold740716 (项为之强)   2021-08-10 21:40:00
你的 $today 是大写还是小写?
楼主: raynoz (Rayoz)   2021-08-12 06:28:00
today这个变量其实没用到XD

Links booklink

Contact Us: admin [ a t ] ucptt.com