Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在压缩不同目录中的文件时遇到问题_Linux_Bash_Copy_Cp - Fatal编程技术网

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

Linux 在压缩不同目录中的文件时遇到问题,linux,bash,copy,cp,Linux,Bash,Copy,Cp,好的,基本上我要做的是,将/servers/文件夹中的所有目录移动到/media/backupdrive/上安装的辅助硬盘上。该脚本每天运行一次,因此它会生成带有日期名称的目录,并应将文件夹直接复制到那里(我必须这样做的原因是,我的客户机主硬盘上的磁盘空间有限,每个世界的容量都超过6-7gb)。无论如何,我可以让他们把文件夹复制到/media/backupdrive/currentdate,但是当我试图压缩它时,它说它不能压缩空目录或类似的东西 代码如下: #!bin/bash folderNa

好的,基本上我要做的是,将/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

很抱歉,该图像位于虚拟机上,我必须重新键入它,因为我无法复制和粘贴。

在我看来,您的tar命令缺少输入(例如,最后一个“”),因此说,“tar:怯懦地拒绝创建空存档”

您的脚本似乎适用于以下tar命令:

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

在我看来,您的tar命令缺少输入(例如,一个final“”),因此会说,“tar:胆小鬼拒绝创建空存档”

您的脚本似乎适用于以下tar命令:

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

我会尝试一种稍微不同的方法
tar
本身不使用临时文件,因此您可以
tar
直接将源文件压缩到目标文件,并在第二步中使用zh
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

我会尝试一种稍微不同的方法
tar
本身不使用临时文件,因此您可以
tar
直接将源文件压缩到目标文件,并在第二步中使用zh
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

也许我很困惑,
cp-rf服务器/${I:8}/..
到底应该如何工作?您的意思是,对于'servers'的每个子目录,您都希望复制一个子目录,该子目录的名称是原始名称的子字符串(从第8个字符开始)。servers/${i:8}/与$i相同。我只是注意到了。我使用了${I:8}来获取目录的名称(会切断服务器/)也许我有点困惑,但是
cp-rf服务器/${I:8}/…
到底应该如何工作呢?您的意思是,对于'servers'的每个子目录,您都希望复制一个子目录,该子目录的名称是原始名称的子字符串(从第8个字符开始)。servers/${i:8}/与$i相同。我只是注意到了。在获取目录名时,我使用了${I:8}(会切断服务器/)