压缩不同目录中的文件时遇到问题

时间:2013-03-19 17:50:30

标签: linux bash copy cp

好吧,基本上我正在做的是,我正在把/ servers /文件夹中的所有目录,并将它们移动到安装在/ media / backupdrive /上的辅助硬盘驱动器。这个脚本每天运行一次,所以它使目录成为日期的名称,并且应该直接在那里复制文件夹(我必须这样做的原因是因为我的客户端主要硬盘上的磁盘空间有限开车和他的世界每个都超过6-7gb)。无论如何,我可以让他们将文件夹复制到/ media / backupdrive / currentdate,但是当我尝试压缩它时,它说它无法压缩空目录或类似的东西。

以下是代码:

#!bin/bash
folderName=$(date +"%m-%d-%y")
mkdir "/media/backupdrive/$folderName"

for i in servers/*; do
    cp -rf $i /media/backupdrive/$folderName/
    cd /media/backupdrive/$folderName/
    tar -C ${i:8} -czvf "${i:8}.tar.gz"
    cd /root/multicraft/
done

对于图片感到抱歉,它出现在虚拟机上,我不得不重新输入,因为我无法复制和粘贴。

2 个答案:

答案 0 :(得分:3)

在我看来,你的tar命令缺少输入(例如,最后的“。”),因此说“tar:Cowardly拒绝创建一个空档案”。

使用此tar命令,您的脚本似乎对我有效:

tar -C ${i#servers/} -czvf "${i#servers/}.tar.gz" .

答案 1 :(得分:1)

我尝试了一种稍微不同的方法。 tar本身并不使用临时文件,因此您可以tar将来源gzip直接发送到目的地,然后在第二步中将其压缩#!bin/bash dst="/media/backupdrive/$(date +"%m-%d-%y")" for d in servers/*; do tarfile="$dst/${d#servers/}.tar" tar -C "$d" -cvf "$tarfile" . gzip -9 "$tarfile" done

{{1}}