在 Win7 NTFS 卷上,我正在使用正确支持 --link-dest 的 cwrsync 创建“快照”类型的备份。所以我有:
z:\backups\2010-11-28\cygdrive\c\Users\...
z:\backups\2010-12-02\cygdrive\c\Users\...
Run Code Online (Sandbox Code Playgroud)
2010-12-02 的内容主要是硬链接回 2010-11-28 目录中的文件,但只有 2010-12-02 才有一些新的或更改的文件。在 linux 上,'du' 实用程序会告诉我每个增量快照占用的实际大小。在 Windows 上,cygwin 下的 explorer 和 du 都被硬链接所迷惑,并且显示 2010-12-02 比 2010-11-28 占用更多空间。
是否有 Windows 实用程序可以显示实际使用的正确空间?
我试图在我的 C 驱动器上创建一个指向我 D 驱动器上的文件的硬链接。我打开一个具有管理员权限的终端并尝试以下操作:
C:\Users\sandro>mklink /H _vimrc D:\sandro-desktop\.vimrc
我得到的错误是:
系统无法将文件移动到不同的磁盘驱动器。
当我尝试软链接时,我遇到的问题是,由于某种原因,对链接内容的更改未反映在目标文件上。
cp -l硬链接文件而不是复制它们,节省文件系统空间。由于其--exclude功能,我需要使用 rsync 而不是 cp 。
所以我的问题是,如何将 rsync 同步到硬链接文件而不是复制它们?显然,这是一个本地文件系统副本。我已经阅读了 rsync-H选项的文档,但我不清楚这是否与cp -l.
我了解符号链接和硬链接之间的区别,但我一直不明白为什么要选择其中之一。
在 Windows NTFS 文件系统上,我有一个文件(比如orig.mp3)。我通过此路径orig.mp3以正在使用的方式打开此文件(例如,通过在 VLC 中播放它)。
然后我创建一个硬链接 ( cmd /c mklink /h link.mp3 orig.mp3)。这导致两个 NTFS 路径指向完全相同的文件。
最后,我再次尝试删除链接文件(del link.mp3,或在 Windows 资源管理器中删除)。
失败并显示错误:“该进程无法访问该文件,因为它正被另一个进程使用。”
为什么?更重要的是:我怎样才能避免这种情况(除了确保没有进程使用原始文件)?我是否可以告诉 Windows 进行“延迟删除”,以便在不再使用原始文件时自动删除链接文件?
我必须将目录结构从一个本地 NTFS 磁盘复制到另一个(Windows 7+)并保留此目录结构中存在的硬链接。
一个可接受的解决方案是在复制之前用(相对)符号链接替换硬链接,但我不确定这是否可行。
请注意,这些是硬链接,复制连接点和符号链接没有问题,后者可以稍后复制和修复。我不打算克隆它,只是将目录结构(它是整个磁盘的一部分)复制到另一个非空磁盘。
这里有哪些选择?
我正在尝试创建硬链接,但收到错误消息“不允许操作”
tikey@helios64:/data/$ ln /data/dir1/img1.jpg /data/dir2/
ln: failed to create hard link '/data/dir2/img1.jpg' => '/data/dir1/img1.jpg': Operation not permitted
Run Code Online (Sandbox Code Playgroud)
-s但是,通过在命令中添加 a ,我可以创建软链接。我也可以复制该文件。所以我的用户有权在目录中创建文件。
为什么在尝试创建硬链接时会出现权限错误?我可以采取哪些措施来防止出现这种情况?
编辑 - 基于一些答案的附加信息:
文件系统是 ext4,并且还有dir1on的绑定挂载/srv(但卸载/srv/dir1没有任何区别):
/dev/md127 on /data type ext4 (rw,relatime,stripe=256)
/data/dir1 on /srv/dir1 type fuse (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
Run Code Online (Sandbox Code Playgroud)
该设备设置为 raid 5:
md127 : active raid5 sdc[1] sdb[2] sdd[0]
7813772288 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
bitmap: 0/30 pages [0KB], 65536KB chunk
Run Code Online (Sandbox Code Playgroud)
lsattr该文件显示:
tikey@helios64:/data$ lsattr dir1/img1.jpg
--------------e------- dir1/img1.jpg
Run Code Online (Sandbox Code Playgroud) 单个 NTFS 文件可以“硬链接”到多个目录项;所有目录条目(例如A、B、C)都指向相同的数据。如果对这个单个文件(例如A)进行更改,则所有条目(A、B、C)现在都引用相同的更改数据。但是如果您不希望 B 的数据改变怎么办?有没有办法让Windows将更改的A数据写入新文件,而让B引用相同的未更改数据?例如,改变的A数据可以自动写入新文件;或者可以警告用户并让其选择是否将其他目录条目(B、C 等)链接到新数据。我确实看到,如果将 B 设置为只读,则无法写入 A,并且必须将 A 的更改保存为新名称。但我更喜欢将更改自动写入新文件,或者提示写入旧文件。
如果我在 UNIX 文件系统中有一个特定的文件,有没有办法使用 bash 来查找指向该文件的所有链接,包括符号链接和硬链接?如果每个命令都需要不同的命令,它们是什么?
我四处搜索并试图了解硬链接和符号链接(软链接)之间的区别。
我发现这个链接非常有用。但是我还不是很清楚。我知道软链接不是原始文件的副本,但硬链接是否是副本?