smn*_*brv 26 time-machine macos
我使用 Time Machine 服务器进行备份。同时,我正在开发许多 Web 应用程序,其中项目通常包含一个文件夹,其中包含我想要备份的应用程序文件和我不想备份的node_modules文件夹(外部库)。换句话说,文件夹结构例如是:
projects
-- app1
---- src
---- node_modules -- I want to ignore only this folder
---- package.json
-- app2
---- whatever-else
---- node_modules -- I want to ignore only this folder
---- package.json
---- elephant.jpg
Run Code Online (Sandbox Code Playgroud)
等等。
应用程序的数量很大并且还在增长(目前超过 20 个),node_modules文件夹的大小通常比项目的其余部分大数千倍:大小很大,文件也很多。
如何排除node_modules整个系统中的所有文件夹(例如.gitignore但对于时间机器)?有没有办法通过面具做到这一点?我只是不想一直手动将文件夹添加到排除的文件夹中。
我也可以使用 cron 脚本每 N 分钟搜索一次新文件夹并使它们被忽略。
有解决方案吗?
Gia*_* P. 19
您可以node_modules从当前路径中查找并排除所有文件夹,例如在您的主目录 ( ~) 中,如下所示:
$ find `pwd` -maxdepth 3 -type d -name 'node_modules' | xargs -n 1 tmutil addexclusion
Run Code Online (Sandbox Code Playgroud)
感谢@peterdemartini:https ://gist.github.com/peterdemartini/4c918635208943e7a042ff5ffa789fc1
请注意,排除的文件夹不会出现在 Time Machine 系统偏好设置中或运行以下命令时:
$ defaults read /Library/Preferences/com.apple.TimeMachine.plist SkipPaths
Run Code Online (Sandbox Code Playgroud)
当您使用此命令 (
tmutil addexclusion) 时,即使您移动它,您排除的项目仍保留在 Time Machine 排除列表中,而当您从 Time Machine 首选项面板中排除项目时,情况并非如此。如果您使用带有 -p 标志的上述命令,则它不会是粘性的,并且与您从 Time Machine 首选项窗格中添加的排除项相同。https://www.macworld.com/article/2033804/control-time-machine-from-the-command-line.html
恢复旧帖子,但在寻找相同的东西时,我最终尝试了这个名为 Asimov 的工具,它对我来说非常有用。
Asimov 将扫描目录以查找node_modules(nodeJs) 或vendor(php composer),然后从下一次 TimeCapsule 备份中自动排除。它还将添加一个 cron 作业来更新这些排除项。
希望这可以帮助某人。
我发现了一个Reddit 帖子。这是您要找的吗?
正常情况下,时间机器会在插入备份驱动器时自行运行,或者在最近一次备份后一小时(以最后发生者为准)运行。您可以使用自己的启动守护程序来实现同样的目的。您将在以下位置创建一个文件
/Library/LaunchDaemons/local.tmupdate.plist并将其内容设置为如下所示。然后,您可以设置脚本
/usr/local/bin/tmupdate.sh来清除旧的排除列表,使用新的排除列表重新创建它,然后启动备份本身:
Run Code Online (Sandbox Code Playgroud)#!/bin/sh defaults delete /Library/Preferences/com.apple.TimeMachine.plist SkipPaths mdfind 'kMDItemUserTags == "No Backup"' -0 | xargs -0 tmutil addexclusion tmutil startbackup --auto
| 归档时间: |
|
| 查看次数: |
7122 次 |
| 最近记录: |