作者raynoz (Raynoz)
看板Linux
标题Re: [问题] shellscript tar问题
时间Thu Aug 5 21:35:35 2021
不好意思我又来了...
这几天遇到一些问题想破头只想出一点东西 决定还是来跟各位求助..
因为刚学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还在没有删掉
不知道问题在哪里...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.75.6.134 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1628170537.A.ADD.html
1F:→ observer0117: 备份的话,不考虑rsync? 08/05 22:08
2F:→ observer0117: 比对档案的话,diff或md5也许比较好? 08/05 22:10
3F:→ observer0117: tar可以直接pipe跨档案系统/目录,不需要暂存档 08/05 22:12
4F:→ raynoz: 感谢O大建议 我很需要XD 08/06 08:04
5F:推 rickieyang: rm -rf $verifydest/$file 会变成 rm -rf 3/file1 08/06 10:11
6F:→ rickieyang: file2 第二个档案没有 3/ 路径. 你可以 cd 先 cd 再 08/06 10:11
7F:→ rickieyang: rm 08/06 10:11
8F:推 goldie: 建议先装个 shellcheck 把语法修一修 08/06 12:00
9F:→ goldie: 看到 rm -rf 後面的变数没 quoting 实在是冒冷汗 08/06 12:00
10F:→ raynoz: 感谢两位 !! 08/06 14:06
11F:推 Gold740716: 你的 $today 是大写还是小写? 08/10 21:40
12F:→ raynoz: today这个变数其实没用到XD 08/12 06:28