rsync 同步隐藏文件(以点 . 开头的文件,例如 .env)
默认情况下 rsync 并不会忽略隐藏文件,但如果你用通配符 *,它不会匹配以 . 开头的文件。
例如这个简单命令:
rsync -av /path/to/src/* /path/to/dest/
因为写了通配符 *,就不会包括隐藏文件和隐藏文件夹。
所以关键在于怎么写源路径和通配符。下面详细说明:
1. 同步整个目录(包括隐藏文件)
如果你想把整个目录 src/ 同步到 dest/,包括隐藏文件:
rsync -av --progress /path/to/src/ /path/to/dest/
-a:归档模式,保留权限、符号链接等-v:显示详细信息--progress:显示传输进度
注意
/path/to/src/后的斜杠很重要:
/src/→ 同步目录内容到目标目录
/src→ 同步整个 src 目录到目标目录
2. 使用通配符同步隐藏文件
如果你只想同步某些文件(比如 .env 或 .gitignore),普通 * 匹配不到隐藏文件,需要加 {.,}*:
rsync -av /path/to/src/{.,}* /path/to/dest/解释:
{.,}*会匹配:*→ 所有非隐藏文件.*→ 所有隐藏文件(.开头的文件和文件夹,但不包括.和..)
注意:这种方式会匹配 . 和 ..,但是 rsync 会自动忽略它们。
3. 只同步特定隐藏文件
比如你只想同步 .env:
rsync -av /path/to/src/.env /path/to/dest/
完全直接,没有通配符问题。
4. 同步隐藏文件夹
如果隐藏文件夹里也有内容,例如 .config/,同样可以用:
rsync -av /path/to/src/.config/ /path/to/dest/.config/
或者全目录同步直接包含隐藏文件夹(用方法1即可)。
同步所有文件(含隐藏文件),用一个简单命令:
rsync -av /path/to/src/ /path/to/dest/
只要不写通配符 *,就会包括隐藏文件和隐藏文件夹。