0

我对这一切都很熟悉,所以轻松一点——我的第一个 bash 脚本。

我制作了一个简单的 bash 脚本:

  • 登录到网络服务器
  • 将网站文件传输到我们的 OSX 服务器
  • 将数据库哑元传输到我们的 OSX 服务器
  • 在 OSX 上使用 tar 压缩文件
  • 将日期命名的存档保存到 OSX 上的不同目录
  • 删除超过 15 天的档案

该脚本运行良好,但在制作存档时由于权限错误而失败 - 这一切都发生在 OSX 服务器上。

如何授予脚本压缩文件的权限?我使用网络服务器的 root 用户来传输文件。

该脚本非常基本 - 只是一堆像这样的终端命令:

echo "START WEB SERVER BACKUP"
rsync -azrP --delete user@1.2.3.4:/etc/apache2/ ~/Backups/webserver-backups/apache/;
echo "Complete"
echo "Starting transfer of mysql databases"
rsync -azrP --delete user@1.2.3.4:/mysql-backups/ ~/Backups/webserver-backups/mysql/;
echo "Complete"
echo "Starting transfer of website files"
rsync -azrP --delete root@1.2.3.4:/website-vhosts/ ~/Backups/webserver-backups/vhosts/;
echo "Complete"
echo "Compressing files into archive - this may take 5-10 minutes"
DATE=`date +%Y-%m-%d`
tar -zcfp ~/Backups/webserver-backups/archives/dev-$DATE.tar.gz ~/Backups/webserver-backups;
echo "Complete"
echo "Removing archives older than 15 days"
find "~/Backups/webserver-backups/archives/" -maxdepth 1 -type f -name "*.tar.gz" -mtime +15 -exec rm -f {} \;
echo "Complete"
echo "WEB SERVER BACKUP COMPLETE"

任何帮助或指示将不胜感激。

干杯

4

2 回答 2

0

p选项仅用于提取。试试这个:

tar -czf

于 2013-03-08T02:16:25.860 回答
0

您的问题是尝试创建 tarball 的用户无法读取某些文件(如 dbu_1354246775.sql)。删除 ~/Backups/webserver-backups 中的所有文件:

sudo find ~/Backups/webserver-backups -type f -delete

然后在您的脚本中将tar -zcfp命令替换为tar czf

并重新启动您的脚本

于 2013-03-08T12:18:19.083 回答