我写了一个自动备份和镜像脚本,它将或多或少地复制文件,数据库,安装权限并稍微修改镜像文件,以便它们可以在另一台服务器上工作备份的文件。除了重新配置之外,我已经编写并设置了其他所有内容。我所有的尝试都失败了,我不知道如何解决它。使用sh文件查找和替换
因此,这些都是在培训相关线(改性供公众使用的):
FOLDER="kf.hammertime.com.au"
SERVER="fulcan"
BACKUPUSER="backupclient3"
DESTINATION="/var/www/Backup-Server"
SOURCE="/var/www"
RECONFIG="1"
if [ "${RECONFIG}" = "1" ]
then
#Original to be replace
echo Reconfiguring website for the mirrored site.
REPLACESTRING10="define (\'ROOT_PATH\', \'\/var\/www\/${FOLDER}\/trunk\')"
REPLACESTRING20="define ('DB_PASSWORD', 'hammertime1')"
REPLACESTRING30="define ('DB_USERNAME', 'hammertime2')"
REPLACESTRING40="define ('DB_HOST', 'localhost')"
#String to be replaced
REPLACESTRING11="define ('ROOT_PATH', '${SOURCE}\/${FOLDER}')"
REPLACESTRING21="define ('DB_PASSWORD', 'hammertime3')"
REPLACESTRING31="define ('DB_USERNAME', 'hammertime4')"
REPLACESTRING41="define ('DB_HOST', 'hammertime5')"
REPLACESTRING12="define (\'ROOT_PATH\', \'${SOURCE}\/${FOLDER}\/trunk\')"
echo ${REPLACESTRING10}
#Reconfigure various configuration files for Backup-Server active use
#find /your/home/dir -name "*.txt" | xargs perl -pi -e 's/stringtoreplace/replacementstring/g'
#Edits the files regardless if its in trunk or not. Will come up with errors.
#sudo replace "${REPLACESTRING10}" "${REPLACESTRING12}" <${DESTINATION}/${FOLDER}/trunk/lib/config.php> ${DESTINATION}/${FOLDER}/trunk/lib/config2.php
#sudo sed -i s/"${REPLACESTRING10}"/"${REPLACESTRING12}"/g ${DESTINATION}/${FOLDER}/trunk/lib/config.php
#sudo perl -i -p -e 's{${REPLACESTRING10}}{${REPLACESTRING12}}g' ${DESTINATION}/${FOLDER}/trunk/lib/config.php
sudo sed -i 's/${REPLACESTRING10}/${REPLACESTRING12}/g' ${DESTINATION}/${FOLDER}/trunk/lib/config.php
#sudo sed -i 's/${REPLACESTRING10}/${REPLACESTRING11}/g' ${DESTINATION}/${FOLDER}/lib/config.php
#sudo sed -i 's/${REPLACESTRING20}/${REPLACESTRING21}/g' ${DESTINATION}/${FOLDER}/trunk/lib/config.php
#sudo sed -i 's/${REPLACESTRING20}/${REPLACESTRING21}/g' ${DESTINATION}/${FOLDER}/lib/config.php
#sudo sed -i 's/${REPLACESTRING30}/${REPLACESTRING31}/g' ${DESTINATION}/${FOLDER}/trunk/lib/config.php
#sudo sed -i 's/${REPLACESTRING30}/${REPLACESTRING31}/g' ${DESTINATION}/${FOLDER}/lib/config.php
#sudo sed -i 's/${REPLACESTRING40}/${REPLACESTRING41}/g' ${DESTINATION}/${FOLDER}/trunk/lib/config.php
#sudo sed -i 's/${REPLACESTRING40}/${REPLACESTRING41}/g' ${DESTINATION}/${FOLDER}/lib/config.php
fi
因此,在短期行“须藤SED -i的/ $ {REPLACESTRING10}/$ {REPLACESTRING12}/G'$ {DESTINATION}/$ {FOLDER} /trunk/lib/config.php“并没有很好地吸收变量。因此,我尝试使用Perl的替代方法,但无济于事(但我可能已经n00bing它)。我的大部分尝试都列在那里。以及替换。
我只需要在单个文件中更改某些行(行编号可以更改)。
在此先感谢您的时间和耐心(顺便说一下,这是第一次写SH脚本,我习惯了BAT,所以我确信我已经记录了一小部分,但它不出差错效果很好)
编辑: 文件块的样子:
define ('ROOT_PATH', '/var/www/kf.hammertime.com.au/trunk');
define ('DB_HOST', 'hammertime1');
define ('DB_USERNAME', 'hammertime2');
define ('DB_PASSWORD', 'localhost');
,我想将其更改为:
define ('ROOT_PATH', '/var/www/Backup-Server/kf.hammertime.com.au/trunk');
define ('DB_HOST', 'hammertime3');
define ('DB_USERNAME', 'hammertime4');
define ('DB_PASSWORD', 'hammertime5');
但其中一些已编辑的内容将是变量...
玉以及当我想你的建议,我得到这样的:------ 须藤SED -i 'S /定义\' \ '' ROOT_PATH \'\ '\,\' \” '\/var \/www \ /jb.qk.com.au \/trunk \''/ define \''ROOT_PATH \'\'',\'\''/ var/www \/jb .qk.com.au \/trunk \'''/ g'/var/www/Backup-Server/jb.qk.com.au/trunk/lib/config.php sed:-e expression#1,字符87:未知选项's'----- 我不逃避什么? – Mattisdada
请参阅我的修订。祝你好运。 – shellter
最后的编辑是它。非常感谢你 :)。我想把我的头发撕掉,如果我不能找出那一个..... – Mattisdada