linux - 将文件从一台服务器移动到另一台带日期戳的 Linux

标签 linux shell

我正在尝试将日志文件从生产环境备份到备份位置。两台服务器都运行 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

文件被移动到另一台服务器中,并创建一个带有日期戳的文件夹,其他所有内容都被转储到那里,而没有正确的目录结构。我需要在日期戳目录之后维护相同的目录结构。我怎样才能实现这个目标?

编辑:我需要在目标路径中包含原始路径的最后一个文件夹名称,例如:

/test/MN/UAT/cpp/testmove/timestampdir/MNCDCI

最佳答案

这可能会派上用场:

https://github.com/vahidhedayati/definedscp/blob/master/elapsed-scp.sh

要做你正在尝试做的事情,你可以尝试这样的事情

这是将所有 a 文件夹备份为 tar 命令,然后 ssh 到 b 文件夹内的远程主机/tmp 并提取它....

(cd /tmp/; tar -cvzf - a)|(ssh REMOTE_HOST 'cd /tmp/; tar -xvzf -')

上面是 tmp 中的文件夹直接从本地主机复制到远程主机/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

或扩展初始 tar 以包含

exclude="something"
exclude="somethingelse"

如果需要,但这应该复制文件并使用 tar 保留文件夹结构。希望对您有帮助

关于linux - 将文件从一台服务器移动到另一台带日期戳的 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25908862/

相关文章:

shell - 脚本文件执行正常,但在 SSIS 中使用 WinSCP 失败

linux - 错误设置Git并提交到Github

shell - 无法将 shell 命令的输出写入 Go 中的文件

Java ADB shell 不返回任何内容

bash - shell脚本随机数生成

python - "killall python"后看不到键盘输入

linux - 使用 sed、awk、grep 转换文本

php - 终端和 PHP 中的 PATH 不同

c++ - 如何在循环后立即打断点?

linux - 生产 Linux 系统(RH/CentOS 和 Debian/Ubuntu)中的系统级跟踪状态如何?