我正在尝试复制目录树以递归方式保留文件的硬链接。使用 gnu cp,这将与 -l 标志一起使用。cp 然后会重新创建目录结构,但不需要复制每个文件的内容。
这是备份的准备工作,首先我想制作上一个备份的廉价(硬链接)副本,然后通过此副本 rsync 源目录。大致:
cp -r -l yesterdays_backup todays_backup
rsync -a source_dir todays_backup
Run Code Online (Sandbox Code Playgroud)
不幸的是,OSX 的 cp 不支持 -l 标志,据我所知,cpio 不支持递归复制。另一种选择是 pax,但这会导致整个目录结构被复制:
pax -rw backups/yesterdays_backup backups/todays_backup
Run Code Online (Sandbox Code Playgroud)
变换:
yesterdays_backup
|
\source_dir (...)
Run Code Online (Sandbox Code Playgroud)
到:
todays_backup
|
\backups
\yesterdays_backup
\source_dir(...)
Run Code Online (Sandbox Code Playgroud)
应该有一个简单/明显的方法来做到这一点,但我目前很难过...... cpio 和 pax 的任何替代方案?我想避免安装 gnu cp。
我知道 Timemachine,但它不能正确地增量备份加密目录。
小智 15
从 MacPorts 安装 cp 很容易,但是,如果您不想或想要创建可移植脚本,那么您有三个选择:
同步
rsync --archive --link-dest=../yesterdays_backup backups/yesterdays_backup\
backups/todays_backup
Run Code Online (Sandbox Code Playgroud)
cpio
mkdir backups/todays_backup
cd backups/yesterdays_backup
find . -print | cpio -p -al ../todays_backup
Run Code Online (Sandbox Code Playgroud)
大伙儿
mkdir backups/todays_backup
cd backups/yesterdays_backup
pax -rwl . ../todays_backup
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10264 次 |
最近记录: |