用于备份我的“主”文件夹的 Bash 脚本

Posted

技术标签:

【中文标题】用于备份我的“主”文件夹的 Bash 脚本【英文标题】:Bash Script to backup my "home" folder 【发布时间】:2014-07-23 02:08:14 【问题描述】:

如何跳过备份“下载”文件夹?

这是我的代码:

#!/bin/bash

# Daily backup script

# Create some needed variable
day=$(date +%F)
Folder="/home/ME/"

File="/media/MediaTwo/Copy/UbuntuBackup/$day.tar.gz"

# Backup Server Configuration
tar cpzf $File $Folder

# Remove backup files older than 90 days
find $File* -mtime +90 -exec rm  \;

【问题讨论】:

看这里,可能会重复http://***.com/questions/984204/shell-command-to-tar-directory-excluding-certain-files-folders 【参考方案1】:
tar cpzf $File --exclude=Downloads $Folder

【讨论】:

这里需要单引号吗? @haifzhan 我不明白你的问题。您认为单引号在哪里有用/必要? 您可以重复--exclude 选项来排除另一个目录。【参考方案2】:

排除下载文件夹的最简单方法是在tar 命令中添加一个选项(即--exclude)。

我建议将代码的第 12 行修改为:

tar cpzf $File --exclude "$FolderDownloads" $Folder

我认为这应该可以满足您的需求。

【讨论】:

【参考方案3】:

使用扩展模式匹配:

shopt -s extglob; shopt -s dotglob
tar cpzf "$File" "$Folder"/!(Downloads)

【讨论】:

【参考方案4】:

我建议在多核机器上实现最高速度:

tar -c --use-compress-program=pigz -f $File --exclude=Downloads $Folder

【讨论】:

以上是关于用于备份我的“主”文件夹的 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

sh 用于将所有docker镜像备份到文件的bash脚本

用于搜索目录并将文件移动到新目录、删除任何副本的 Bash 脚本

sh bash单文件备份旋转脚本

用于归档文件然后复制新文件的 Bash 脚本

常用脚本让你事半功倍

Linux运维---第二个shell脚本