超过1周的rsync文件


24

我想在服务器A上运行rsync,以便在7天以上时从服务器B复制所有文件。

find . -mtime -7

我不想删除服务器B上的文件。


b)您多久运行一次rsync?

Answers:


30

这应该使您扎实地前进

rsync -RDa0P \
    --files-from=<(find sourcedir/./ -mtime -7 -print0) \
    . user@B:targetdir/

这将复制设备节点,权限,时间戳。我很确定-H选项与--files-from不会正确


23
要将其设置为远程过滤器:rsync -avn --files-from=<(ssh user@A 'find /path/on/A/ -mtime -7 -type f -exec basename {} \;') user@A:/path/on/A/ user@B:targetdir
cybertoast 2014年

我想对网络敬酒的评论进行更正。也许他的上下文与我的上下文不同,但在给定时间标准的情况下,我试图从远程服务器简单地提取文件。因此,服务器A是我的目的地,服务器B是我的源,那么:rsync -avn --files-from = <(ssh user @ A'find / path / on / A / -mtime -7 -type f -exec basename {} \;')user @ B:/ / path / in / server / A注意,只有一个/开头。--files-from为您处理相对路径。如果您有疑问,请使用man rsync并参阅--files-from部分。
einarc

@cybertoast basename您的命令是什么意思?你能解释一下吗?
Kemat Rochi

@KematRochi-“基名,目录名-返回文件名或路径名的目录部分”。希望能有所帮助。
敬酒

6

我根据cybertoast的注释编写了此脚本,以将其从远程服务器同步到本地。

您可以通过./script.sh 3或尝试调用脚本./script.sh 3 dry

#!/bin/bash
TIME=$1
DRYRUN=$2

if [[ -z $TIME ]]; then
  echo "Error: no time argument."
  echo "Please enter the number of days to sync."
  exit 1
fi

if [[ $DRYRUN = "dry" ]]; then
  DRYRUNCMD="--dry-run"
  echo "Dry run initiated..."
fi

rsync -avz $DRYRUNCMD --files-from=<(ssh \
    user@remote "find path/to/data/ \
    -mtime -$TIME ! -name *.mkv -type f \
    -exec ls $(basename {}) \;") \
  user@remote:. .
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.