将文件夹 A 中的所有文件夹压缩到文件夹 B,无需“备份”

将文件夹 A 中的所有文件夹压缩到文件夹 B,无需“备份”

我有一个小问题。

我想将 /etc/nginx/html/ 中的所有文件夹(有网站文件夹)压缩到 /etc/nginx/html/backups/

现在你看到:文件夹“backups”与“Website1”和“Website2”位于同一文件夹中,我不想压缩文件夹“backups”

我尝试这个:

cd $PATH_TO_WEBFOLDER

folders=`for i in $(ls -d */ | grep -Ev "(backups)"); do echo ${i%%/}; done`
for ftp in $folders; do
  tar -cvvzf $ftp-$datum.tar.gz *
done

但它不起作用。然后我尝试这个:

PATH_TO_WEBFOLDER="/etc/nginx/html"
datum=$(date +"%d-%m-%Y")
BACKUP_PATH="/etc/nginx/html/backups/$datum"


# make absolute and add dir
backup_path="$(readlink -f "$backup_path")/FTPBACKUP"
cd $PATH_TO_WEBFOLDER

for d in */; do
  d="${d%/}" # strip trailing slash

  if [ -n "${d##*(backup)*}" ]; then
    tar cvvzf "$backup_path/$d-$datum.tgz" "$d" 
  fi
done

但它也不起作用:/

谁能帮我?

答案1

简单的解决方案似乎是使用 tar 来排除一个文件夹:

tar --exclude=./backups/ -cvvzf $ftp-$datum.tar.gz *

这应该很简单。
我发现在我的系统上 --exclude 必须紧跟在 tar 命令之后。

相关内容