我有这个简单的bash脚本从我的dev服务器获取副本:
#!/bin/sh
DATE=`date +%Y-%m-%d_%H%M.%S`
BASEDIR="/var/www/db"
RELEASEDIR="$DATE";
RELEASEDIRFULL="$BASEDIR/releases/$RELEASEDIR"
mkdir -p "$RELEASEDIRFULL"
echo "Chdir to \"$RELEASEDIRFULL\""
cd "$RELEASEDIRFULL"
echo "Getting copy from dev"
ssh dev.example.tld "cd /tmp; cd /sites/db; tar -zcvp --exclude data --exclude scripts -f - *" | tar zxvpf -
ln -s /var/www/db/data data
ln -s /var/www/db/scripts scripts
cd $BASEDIR
rm htdocs; ln -s releases/$RELEASEDIR htdocs
最近它没有明显的理由停止了正常工作。它到达ssh行,执行得很好(文件出现在实时服务器上)但不继续使用ln命令。如果我注释掉ssh行,那么行将正确执行。
更新:我注意到当我以www-data登录并启动脚本时,它按预期完成,没有错误。
答案 0 :(得分:1)
没时间检查手册页,但看起来你的tar输入是- *
- 所有文件+ stdin?您是否意味着--
暂停进一步的参数处理(如果tar支持)