我试图计算出rsync筛选器语法来执行复杂的包含/排除,并试图实现以下目标:
Include /
Exclude /home
Include /home/user1/*
Include /home/user2/subdir/*
我已经尝试了许多过滤器语法的变化,尽管我多次阅读手册页,但我无法获得这样的效果。Rsync过滤器似乎非常强大,我很难相信它们无法处理这样的常见场景。
我的意思是使用rsync删除某些文件(对于高效删除包含数千个文件的大目录),在这种情况下,作为命令行中的模式提供给shell脚本。
到目前为止,这是我的shell脚本rsync_del.sh中的内容
#!/bin/bash
TARGET_DIR=${1}
shift
PATTERNS="${@}"
for patt in ${PATTERNS} ; do
# Both do the same
#INCLUDE_PATTERNS="${INCLUDE_PATTERNS}"' --include='\'"${patt
我每3小时从另一台电脑复制图像。但最近我遇到了一个错误。当我尝试ssh到那台PC时,我得到了以下信息:
Unable to negotiate with 192.xxx.xx.xx port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
我为这个错误寻找了一个解决方案,我发现如下:
-oKexAlgorithms=+diffie-hellman-gro
我有一个稍微复杂的rsync命令,需要由python程序定期执行。
enter code here
命令从命令行正确执行,但在使用subprocess.run()运行时,包含/排除筛选器似乎被忽略。
该命令用于在ssh上的一对RaspberryPI3之间同步某些数据文件。Pi在Raspbian Python 3.5.2下运行Python 3.5.2和rsync 3.11。
这里是从ipython会话执行的测试代码.
In [3]: def testrsync():
...: from subpro`enter code here`cess import run
...:
当我使用rsync (在Pi上使用Raspbian时使用V3.2.3)时遇到了问题,在目录末尾包含一个空格。示例:
pi:~ $ find source/
source/
source/hello
source/hello/whitespace_dir <--- dir with whitespace at the end
source/hello/whitespace_file <--- file with whitespace at the end
source/foo
source/foo/bar1
source/foo/bar2
模拟运行rsync的输出:
pi:~ $
我想要复制我的c目录与所有子目录,不包括./git子目录。我是用rsync做的:
echo "copy c and sh files "
rsync -a --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c
# remove .git directory = do not send it to dropbox. Thx to Tomasz Sowa
rm -rf ~/Dropbox/Public/