我正在编写一个 bash 脚本,以便对远程存储服务器执行一些自动备份。批处理脚本将与 cron 作业一起运行,但我之前已经对其进行了测试。请参阅下面的脚本:
#!/bin/bash
BACKUPS_PATH='/home/web/xxx/yyy/pb_data/backups'
cd $BACKUPS_PATH
CURRENT_DIRECTORY=$(pwd)
echo "Current directory is: ${CURRENT_DIRECTORY}"
LATEST_BACKUP=$(ls -Art | tail -n 1)
echo "Latest backup file is: ${LATEST_BACKUP}"
FILE_PATH="${BACKUPS_PATH}/${LATEST_BACKUP}"
echo "Latest backup entire path is: ${FILE_PATH}"
DATE=$(date)
echo "Datetime: ${DATE}"
echo "Script has run at ${DATE}" > auto_backup.log
scp -P 23 $FILE_PATH xxx@yyy:/home/backups
一切正常,除了当我尝试将日期回显到 auto_backup.log 时,该文件不会在本地创建,而是可以在传输备份文件的远程主机中找到它。我不理解这种行为,因为该线路甚至在建立 scp 连接之前就正在运行。有谁知道为什么会发生这种情况以及应该如何解决?
答案1
在查看问题时,我意识到这是因为我在备份目录路径中进行了 CD,这就是创建日志并成为要传输的最新文件的位置。现在这个问题已经解决了