我正在尝试使用rsync设置Perl web部署脚本。
我需要排除一些基于通配符的文件,但仅限于特定的文件夹而不是其子文件夹。
如果我列出要排除的文件名,那么它们将被排除在任何目录之外,但是如果我包含完整路径(源或目的地),我不能让它们匹配,所以它们不会被排除。
我试过这个样子的
rsync --recursive --force --delete --progress --exclude='$SOURCE_DIR/index.cgi' --exclude='$SOURCE_DIR/*.pm' "$SOURCE_DIR" "$DEST_DIR"
和
rsync --recursive --force --delete --progress --exclude='$DEST_DIR/index.cgi' --exclude='$DEST_DIR/*.pm' "$SOURCE_DIR" "$DEST_DIR"
这些都不似乎工作的rsync命令,如果我尝试这个
rsync --recursive --force --delete --progress --exclude='index.cgi' --exclude='*.pm' "$SOURCE_DIR" "$DEST_DIR"
则将排除所有文件夹中的文件。
我需要做些什么才能从$DEST_DIR folder
中排除这些文件,而不是其子文件夹?
为什么这个问题标记为Perl语言? – Borodin
'man rsync'搜索'INCLUDE/EXCLUDE PATTERN RULES'。它涵盖了通配符排除。 – xxfelixxx
如果你试图用perl运行rsync,你可能会因为shell转义而被咬,所以你可能需要尝试转义'*'字符。 – xxfelixxx