You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac系统下备份时如何排除node_modules?含外接硬盘备份场景

嘿,这个需求太常见了!不管是本地备份还是同步到外接硬盘,排除node_modules这种动辄几GB的超大目录能省超多时间和空间,给你分享几个Mac终端下的实用方案:

备份时排除node_modules目录的方法(Mac终端适用)

一、用rsync实现精准过滤(首推!)

rsync是Mac自带的强大同步工具,完全能实现类似.gitignore的规则过滤,功能灵活还高效。

基础用法:单次排除node_modules

如果要把本地某个项目目录的内容(除node_modules外)复制到外接硬盘的备份文件夹,命令可以这么写:

rsync -av --exclude='node_modules' /Users/YourName/Projects/MyApp/ /Volumes/MyExternalDrive/MyAppBackup/
  • 参数拆解:
    • -a:归档模式,会保留文件的权限、修改时间、目录结构等所有属性,相当于把-r(递归)、-p(权限)、-t(时间戳)等常用参数打包在一起
    • -v: verbose模式,同步过程中会显示文件列表和进度,方便你确认哪些文件被处理了
    • --exclude='node_modules':明确指定要排除所有名为node_modules的目录或文件(会匹配所有层级的node_modules)

进阶用法:多规则排除/用配置文件管理

如果你有多个要排除的目录(比如.git、dist、临时日志文件),可以多次添加--exclude参数:

rsync -av --exclude='node_modules' --exclude='.git' --exclude='*.log' /Users/YourName/Projects/MyApp/ /Volumes/MyExternalDrive/MyAppBackup/

要是规则太多,像维护.gitignore那样建一个配置文件会更方便——比如创建一个.backupignore文件,每行写一个排除规则:

node_modules
.git
dist
*.log
.DS_Store

然后用--exclude-from参数加载这个文件:

rsync -av --exclude-from='/Users/YourName/.backupignore' /Users/YourName/Projects/MyApp/ /Volumes/MyExternalDrive/MyAppBackup/

二、用find+cp组合(备选方案)

如果不想用rsync,也可以用Mac自带的find命令配合cp实现,不过逻辑稍复杂,适合简单场景:

find /Users/YourName/Projects/MyApp -path '*/node_modules/*' -prune -o -exec cp -a {} /Volumes/MyExternalDrive/MyAppBackup/ \;
  • 逻辑解释:
    • -path '*/node_modules/*' -prune:找到所有包含node_modules的路径,直接跳过(不处理这些路径下的内容)
    • -o -exec cp -a {} ...:把剩下的所有文件/目录,用cp -a(归档复制)命令同步到目标路径

⚠️ 注意:这个方法在目录结构复杂时,可能会出现重复创建目录的问题,所以更推荐用rsync。

小提示

  • 外接硬盘路径:Mac下外接硬盘默认挂载在/Volumes/目录下,你可以在Finder里查看硬盘名称,替换成对应的路径(比如/Volumes/我的移动硬盘)
  • 路径末尾的斜杠:如果源路径末尾加了/,会把源目录里的内容直接复制到目标目录;如果不加斜杠,会把源目录本身复制到目标目录里,根据你的需求调整就行~

内容的提问来源于stack exchange,提问作者Null isTrue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:05:44