我正在尝试将我的日志文件从生产备份到备份位置。两台服务器都运行Linux。当我尝试输入时间戳时,我在目标服务器中遇到问题:
我试过这个;
logpath="/test/MN/PRD/cpp/MNPRD/cdci_logs/MNCDCI/"
backuppath="/test/MN/UAT/cpp/testmove"
time_stamp=$(date +%Y_%m_%d)
scp -r "${logpath}" user@servername:"${backuppath}/${time_stamp}"
cd "${logpath}"
find . -ctime +1 -type f |xargs rm
将文件移动到另一台服务器中,并创建一个带有日期戳的文件夹,其他所有内容都被转储,没有正确的目录结构。我需要在datestamp目录后维护相同的目录结构。我怎样才能做到这一点?
编辑:我需要在目标路径中拥有原始路径的最后一个文件夹名称,例如:
/test/MN/UAT/cpp/testmove/timestampdir/MNCDCI
答案 0 :(得分:0)
这可能会派上用场:
https://github.com/vahidhedayati/definedscp/blob/master/elapsed-scp.sh
要做你想做的事,你可以尝试这样的事情
这是将所有文件夹备份为tar命令,然后将ssh备份到b文件夹中的远程主机/ tmp并解压缩....
(cd /tmp/; tar -cvzf - a)|(ssh REMOTE_HOST 'cd /tmp/; tar -xvzf -')
上面是a是tmp中的文件夹直接从localhost复制到remotehost / tmp文件夹
编辑以添加您可以使用的额外内容,但未经过测试但应该可以使用。
logpath="/test/MN/PRD/cpp/MNPRD/cdci_logs/MNCDCI/"
backuppath="/test/MN/UAT/cpp/testmove"
time_stamp=$(date +%Y_%m_%d)
backup_folder=$backuppath/$time_stamp
(find $logpath -mtime +1 -exec tar -cvzf - {} \;)|(ssh REMOTE_HOST 'mkdir -p $backup_folder; cd $backup_folder; tar -xvzf -')
您可以展开正常以包含
-name \*somename\*
-type f/d
或扩展intial tar以包含
exclude="something"
exclude="somethingelse"
如果需要,但这应该复制文件并使用tar保留文件夹结构。希望它有所帮助