linux - 通过 linux .sh 脚本移动文件

标签 linux bash shell

我设置了一个脚本来将我的 /var/www 目录自动备份到 /root/Dropbox

当 Cron 执行脚本时,备份文件将移动到 /root/ 而不是 /root/Dropbox/。我已将 Dropbox 目录的权限设置为 722,因此写入该目录应该没有问题。

脚本如下:

NOW=$(date +"%Y-%m-%d-%H-%M")

#backup site

if tar -zcvf site-www-var-$NOW.tar.gz '/var/www'; then
    echo "Backup of data created." 1>&2

    if mv /home/site-www-var-* /root/Dropbox/; then
        echo "Data Moved." 1>&2
    else
        echo "Data move failed." 1>&2
        exit 1
    fi
else
    echo "Data backup failed." 1>&2
    exit 1
fi

输出如下:

Backup of data created.
Data Moved.

最佳答案

正如@La Kantara所说,这一行

if tar -zcvf site-www-var-$NOW.tar.gz '/var/www'; then

可能会在执行该命令的用户的当前工作目录中创建 tarball 文件。

因此,我只需更改 tar 命令以使用 tarball 的完整文件路径。

if tar -zcvf /root/Dropbox/site-www-var-$NOW.tar.gz '/var/www'; then
              ^^^  ^^^^^^^

在这种情况下,您的 mv 命令也会变得多余

关于linux - 通过 linux .sh 脚本移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33388377/

相关文章:

无法使用 mmap/malloc/open 等在 64 位 linux 系统上创建大于 2GB 的文件

linux - 防止使用 ./(点斜杠)启动 bash 脚本

c - WEXITSTATUS 在成功案例中返回 popen() 的无效退出状态

python - 计算并发事件的数量

shell - HBase、hadoop、hive通过hive访问Hbase的正确设置方法是什么?

shell - 谁能完整解释这个命令 adb shell sendevent [device] [type] [code] [value]?

linux - 从命令行导入 PostgreSQL CSV

linux - 使用自定义环境运行脚本。变种。和没有额外外壳的工作目录

linux - Ftp 备份文件夹下载为文件,我找不到 .tar.gz 文件

bash - 仅打印其参数的函数是纯函数吗?