[{"data":1,"prerenderedAt":170},["ShallowReactive",2],{"blog:\u002Fblog\u002F2015\u002F05\u002F09\u002Fshell-copy-and-bak-dir\u002F":3},{"id":4,"title":5,"body":6,"categories":157,"comments":158,"date":159,"description":12,"draft":160,"extension":161,"legacySlug":162,"meta":163,"navigation":158,"path":164,"seo":165,"stem":166,"tags":167,"updated":168,"__hash__":169},"blog\u002Fblog\u002F2015\u002F05\u002F09\u002Fshell-copy-and-bak-dir.md"," shell脚本复制文件夹内容到另外的文件夹，如果存在则自动备份",{"type":7,"value":8,"toc":155},"minimark",[9,13,151],[10,11,12],"p",{},"有时我们需要将一个文件夹覆盖到我们的工作目录，但需要自动备份已经存在的文件，一个一个去备份太麻烦了，全部备份又没有必要。shell脚本可以很好滴完成这个任务。代码如下：",[14,15,20],"pre",{"className":16,"code":17,"language":18,"meta":19,"style":19},"language-shell shiki shiki-themes github-light github-dark","#!\u002Fbin\u002Fsh\nupload_dir=\u002Falidata\u002Fwww\u002Fsh\u002Fuseful-shell-script\u002Fupload\u002F\nwww_dir=\u002Falidata\u002Fwww\u002Fsh\u002Fuseful-shell-script\u002Fwww\u002F\nbackexist()\n{\n    filelist=`ls $1`\n    for file in $filelist\n    do\n        if [ -f $1$file ]\n        then\n            if [ -f $2$file ]\n            then\n                cp $2$file $2$file\"_bak_\"`date +%Y-%m-%d`\n            fi\n        else\n            backexist $1$file\"\u002F\" $2$file\"\u002F\"\n        fi\n    done\n}\nbackexist $upload_dir $www_dir\ncp -R $upload_dir\".\" $www_dir\n","shell","",[21,22,23,31,37,43,49,55,61,67,73,79,85,91,97,103,109,115,121,127,133,139,145],"code",{"__ignoreMap":19},[24,25,28],"span",{"class":26,"line":27},"line",1,[24,29,30],{},"#!\u002Fbin\u002Fsh\n",[24,32,34],{"class":26,"line":33},2,[24,35,36],{},"upload_dir=\u002Falidata\u002Fwww\u002Fsh\u002Fuseful-shell-script\u002Fupload\u002F\n",[24,38,40],{"class":26,"line":39},3,[24,41,42],{},"www_dir=\u002Falidata\u002Fwww\u002Fsh\u002Fuseful-shell-script\u002Fwww\u002F\n",[24,44,46],{"class":26,"line":45},4,[24,47,48],{},"backexist()\n",[24,50,52],{"class":26,"line":51},5,[24,53,54],{},"{\n",[24,56,58],{"class":26,"line":57},6,[24,59,60],{},"    filelist=`ls $1`\n",[24,62,64],{"class":26,"line":63},7,[24,65,66],{},"    for file in $filelist\n",[24,68,70],{"class":26,"line":69},8,[24,71,72],{},"    do\n",[24,74,76],{"class":26,"line":75},9,[24,77,78],{},"        if [ -f $1$file ]\n",[24,80,82],{"class":26,"line":81},10,[24,83,84],{},"        then\n",[24,86,88],{"class":26,"line":87},11,[24,89,90],{},"            if [ -f $2$file ]\n",[24,92,94],{"class":26,"line":93},12,[24,95,96],{},"            then\n",[24,98,100],{"class":26,"line":99},13,[24,101,102],{},"                cp $2$file $2$file\"_bak_\"`date +%Y-%m-%d`\n",[24,104,106],{"class":26,"line":105},14,[24,107,108],{},"            fi\n",[24,110,112],{"class":26,"line":111},15,[24,113,114],{},"        else\n",[24,116,118],{"class":26,"line":117},16,[24,119,120],{},"            backexist $1$file\"\u002F\" $2$file\"\u002F\"\n",[24,122,124],{"class":26,"line":123},17,[24,125,126],{},"        fi\n",[24,128,130],{"class":26,"line":129},18,[24,131,132],{},"    done\n",[24,134,136],{"class":26,"line":135},19,[24,137,138],{},"}\n",[24,140,142],{"class":26,"line":141},20,[24,143,144],{},"backexist $upload_dir $www_dir\n",[24,146,148],{"class":26,"line":147},21,[24,149,150],{},"cp -R $upload_dir\".\" $www_dir\n",[152,153,154],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":19,"searchDepth":33,"depth":33,"links":156},[],[18],true,"2015-05-09 12:39:33",false,"md","shell-copy-and-bak-dir",{},"\u002Fblog\u002F2015\u002F05\u002F09\u002Fshell-copy-and-bak-dir",{"title":5,"description":12},"blog\u002F2015\u002F05\u002F09\u002Fshell-copy-and-bak-dir",[18],null,"IWXqNU8BSepTWqsMC65uaAxD0wTOu48MxHCJcXmpj2I",1783807996124]