我可以通过 bash 脚本上传任何具有原始文件名的文件。但是,当我使用 gsutil cp 命令系统更改文件名时,系统会给出未找到文件的错误。
例如我的脚本是;
#!/bin/sh -x
#PATH=/root/gsutil
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export BOTO_CONFIG="/root/.boto"
NOW=$(/bin/date +"%d-%m-%Y")
LASTDB=$(/bin/find /media/bckdrv/backup/ -type f -name "db*" -printf '%p\n'| sort -n | tail -1 | cut -f2 -d" ")
/root/gsutil/gsutil cp $LASTDB gs://radb/webdb/daily/db_$NOW.GZ
我可以在终端上运行它而不会出现任何错误。但是当使用 cron 运行时,我会出现 Not found 错误。
日志如下;
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin
+ export BOTO_CONFIG=/root/.boto
+ BOTO_CONFIG=/root/.boto
++ /bin/date +%d-%m-%Y
+ NOW=07-08-2014
++ /bin/find /media/bckdrv/backup/ -type f -name 'db*' -printf '%p\n'
++ sort -n
++ tail -1
++ cut -f2 '-d '
+ LASTDB=/media/bckdrv/backup/db-9755.GZ
+ /root/gsutil/gsutil cp /media/bckdrv/backup/db-9755.GZ gs://radb/webdb/daily/db_07-08-2014.GZ
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin
+ export BOTO_CONFIG=/root/.boto
+ BOTO_CONFIG=/root/.boto
++ /bin/date +%d-%m-%Y
+ NOW=07-08-2014
++ /bin/find /media/bckdrv/backup/ -type f -name 'db*' -printf '%p\n'
++ sort -n
++ tail -1
++ cut -f2 '-d '
+ LASTDB=/media/bckdrv/backup/db-9755.GZ
+ /root/gsutil/gsutil cp /media/bckdrv/backup/db-9755.GZ gs://radb/webdb/daily/db_07-08-2014.GZ
Copying file:///media/bckdrv/backup/db-9755.GZ [Content-Type=application/x-gzip]...
Failure: list index out of range.
Copying file:///media/bckdrv/backup/db-9755.GZ [Content-Type=application/x-gzip]...
Failure: list index out of range.
如果我更改脚本的最后一行
/root/gsutil/gsutil cp $LASTDB gs://radb/webdb/daily/db_$NOW.GZ
至
/root/gsutil/gsutil cp $LASTDB gs://radb/webdb/daily/
脚本可以使用原始文件名成功上传。
那么我该如何解决这个问题呢?我不想更改我本地的原始文件名。