我制作了一个保存脚本,以将一些目录保存在我的/home
.为此,我循环遍历 /home 中的目录,并为每个目录启动保存。
这些目录包含 jar 文件和一些.txt
.属性和其他目录。我第一次启动该脚本时效果很好。我修改了它,但是昨天当我尝试某些功能时它出错了,我找不到原因。
tar -cjf
当我使用命令创建 .tar.zip 存档时出现此错误。
tar: home/myFolder : 不可能 stat: 没有这种类型的文件或文件夹
backupdate=$(date +%Y-%m-%d)
dirbackup=/save/$backupdate
mkdir $dirbackup
list_dossier=`ls ../home`
for server in $list_dossier
do
tar -cjf $dirbackup/$server.tar.zip home/$server
done
编辑
我试图保持这种保存的形状:一个名为日期的文件夹,在其中,X archves 包含我的 X 文件夹/home
#!/bin/bash
backupdate=$(date +%Y-%m-%d)
dirbackup=/save/$backupdate
mkdir $dirbackup
for server in /home/*
do
echo $server"test"
tar -cjf $dirbackup$server.tar.zip $server
done
exit
答案1
这一行会引起问题:
tar -cjf $dirbackup$server.tar.zip $server
那是因为$server
会像这样/home/myserver
,所以这个命令将扩展为
tar -cjf /save/2019-04-13/home/myserver.tar.zip /home/myserver
/home
请注意tar 文件路径中的额外内容。
相反,我们可以提前更改目录。
#!/bin/bash
backupdate=$(date +%Y-%m-%d)
dirbackup=/save/$backupdate
mkdir $dirbackup || exit
cd /home || exit
for server in *
do
echo $server"test"
tar -cjf $dirbackup$server.tar.zip $server
done
答案2
backupdate=$(date +%Y-%m-%d)
dirbackup=/save/$backupdate
mkdir $dirbackup
find ../home -type d -not -name "." -a -not -name ".." -exec tar -cjf $dirbackup/'{}'.tar.bz2 '{}' \;