NAS服务器之软链接、硬链接之初探

您所在的位置:网站首页 nas存储什么 NAS服务器之软链接、硬链接之初探

NAS服务器之软链接、硬链接之初探

2023-09-06 11:27| 来源: 网络整理| 查看: 265

NAS服务器之软链接、硬链接之初探 2020-03-16 13:10:57 18点赞 144收藏 61评论

创作立场声明:​这次完全是一个linux小白对软硬链接文件技术的一个探索,理论水平不高,很多都是网上现学现卖的东西,请各位大佬海涵,不足之处欢迎各位大佬批评指正,但还是请口下留情。

【写作说明】:本文非教程性文章,仅为作者在学习过程中的简单记录。希望可以通过文章的发布给值友提供一些参考,同时也欢迎值友提供更优的解决方案。文章可能附图不多,多为理论性的阐述,如果感兴趣,请耐心阅读。

需求背景

尝试使用NAS系统有了一段时间,和很多用NAS的朋友一样,起初的设想是将NAS作为家庭媒体服务器,于是注册了很多不可描述的资源下载站,下载了N多T的影视等资源,之后又在NAS建立了plex、emby、jellyfin等媒体服务器,配合tmm进行媒体文件的本地管理(特别是媒体文件的更名整理功能),方便平时家里的使用(媒体服务器等不是今天的重点,简单一提而已)。

ps:在第一稿的时候我尝试用文字来表述自己的需求和遇到的问题,但是发现要写很多文字,而且絮絮叨叨的也不怎么说的清楚,于是决定还是以简单的方式来表述。

需求:

1、使用tr(transmission)下载器下载某T网站上的资源,同时保种(保种时好像不能修改已下载文件的文件名,否则可能导致保种不成功)

2、使用tmm软件对需要纳入媒体资源库的媒体文件进行分文件夹更名保存,这里有点强迫症(如中文文件名等,tmm有这个功能,可以按影片自动建立文件夹,并将对应的nfo文件、海报图片等保存到相应的文件夹中)

图片引用自@阿文菌 的文章图片引用自@阿文菌 的文章

NAS服务器之软链接、硬链接之初探手把手教您用tMM刮削影片信息,让KODI、Jellyfin、PLEX、使用本地媒体电影墙!大家好!俺又来了!上篇文章为大家简单演示了下KODI如何安装和配置及使用!本人只需要2分钟即可安装和配置KODI,愉快的观看和管理家里的电影媒体库。本文用最简洁,也是最完整详细的方式,教给大家3分钟用tMM刮削自己的影片信息。上篇关于KODI的文章链接:文章里有不少值友反馈,KODI刮削有问题,匹配阿文菌| 赞1k 评论714 收藏9k查看详情

3、tr下载的资源类型很多,并不是都需要纳入媒体库进行播放(某T网站有些时候类似于网络游戏,需要下载一些没用的资源进行混上传“打怪升级”),当然也可以在tr等下载软件中通过分文件夹保存的方法解决,但是因为有第2点(使用tmm进行媒体文件更名保存)的需求,所以分文件夹保存也不太可行

4、有些下载时间比较久,没有必要再进行保种,需要删除以释放硬盘空间,但是这些资源又需要我们在媒体库中留存收藏(比如一些比较经典的影片,系列电影等,我个人是喜欢收藏起来,没事的时候可以翻出来再看看,但是一直保种没人下,也是硬盘资源的一种浪费)

综上,我个人的需求是,保种文件和媒体库文件需要相对独立的保存,但是又互不影响,同时又想尽量的节省硬盘空间。

题外话:某T下载资源的保种可以使用某些工具实现同一份文件,多网站上传,俗称辅种。

我之前的做法是:

下载的文件内容结构保留不动,需要纳入媒体库的资源另外复制一份到媒体服务器映射的文件夹中。

这样做的好处可以实现保种文件和媒体库文件相对独立,而不足就是某些纳入媒体库的文件和保种文件需要占用2倍的硬盘空间。在早期媒体库较小,片源不多的情况下此方法尚可,但当媒体库较大时,2倍的占用空间直接导致了存储成本的上升,所以急需要找到一种解决方法。通过网友的介绍,linux系统自支持的软连接和硬链接可以实现一份存储空间,多文件名关联的功能。下面简单介绍下软连接和硬链接的知识。

硬链接和软链接的理论知识

简单来说:

硬链接

就是多个文件名具有相同的inode,指向硬盘中同一个文件,简单理解就是一个文件具有多个文件名。(这个和windows中文件和文件名的对应关系有点不同,理解上可能有点麻烦,可以参考我下面提供的文章了解下。我试着解释下,linux下的文件实际指的是硬盘上的数据,而文件名则是文件。一个数据可以有多个文件名即有多个文件指向这个数据,修改任意一个文件名的文件其实都是对数据进行了改动,类似于文件同步功能)

注意:原则上硬链接只能对文件实现,不能对文件夹实现。也就是说硬链接只能链接单个文件。

删除文件:1个数据如果硬链接了多个文件(名),需要把这多个文件都删除才能实现删除数据的目的。这个好处就在于,如果我们下载的文件为A,我们在媒体库中硬链接了文件B,那么如果我们后期没有保种需要,通过tr等下载程序删除A,但是数据并没有删除,媒体库中的文件B仍然可以使用。

软连接

可以理解为windows下文件的快捷方式,其中只包含了数据原始对应文件的路径,修改软连接文件不能对数据进行修改。

删除文件:如果我们下载的文件为A,我们在媒体库中软链接了文件B,那么B只是指向了文件A,如果我们删除文件B,其实只是删除了快捷方式,对硬盘上的数据没有影响。而如果我们后期没有保种需要,通过tr等下载程序删除A,那么数据也就被删除了,文件B也就失效了。这种方式不适合我的需求。

如想详细了解的话,可以自行百度,我之前看的下面这篇文章,感觉说的还算比较易懂。

NAS服务器之软链接、硬链接之初探软链接文件和硬链接文件-Jolie的博客-51CTO博客软链接文件和硬链接文件blog.51cto.com去看看 硬链接的实现

通过这两天的摸索,大致掌握了3种方法

1、linux自带命令的实现

linux自带硬链接命令

ln [源文件] [新文件]

因为这种方式是用命令行实现,一次只能实现一个文件的链接,而且我们平时的文件路径又很长,所以仅做了解即可,出于效率的考虑,不做推荐。

2、winscp的实现

在贴吧看到有网友说对于NAS系统来说,使用winscp软件(一般用NAS系统的朋友应该都知道这个工具吧,就是用来远程管理NAS文件系统的软件),通过File(s) > New > Link. Add link/shortcut 确实可以实现硬链接。但是,和命令行一样,每次只能实现一个文件的硬链接,而且如果要异文件夹生成硬链接文件,还是要输入完整路径,操作不是特别方便,也不做推荐。

想了解的朋友可以参考以下两个链接的方法(官方说明,E文版,中文版的说明书比较简单,没有看到这个方面的说明)

NAS服务器之软链接、硬链接之初探CreatingLinksandShortcuts::WinSCPWinSCP is a free SFTP, SCP, Amazon S3, WebDAV, and FTP client for Windows.winscp.net去看看NAS服务器之软链接、硬链接之初探Link/ShortcutEditor::WinSCPWinSCP is a free SFTP, SCP, Amazon S3, WebDAV, and FTP client for Windows.winscp.net去看看 3、Link Shell Extension软件的实现

这个软件可能是我很久之前探索硬链接的时候安装的,昨天试了一下,比较好用。先简单贴一下软件的介绍

引用自百度搜索到的软件下载站点介绍:Link Shell Extension 是一个可以在 NTFS 文件系统中创建“硬连接”的 Windows 资源管理器扩展。 “硬连接”让一个文件在多个目录下重复出现,但只占用一份文件的空间。例如,一个大小为 10MB 的“E:a.doc”的文件,创建一个硬连接到“E:共享文件夹a.doc”中,则两个“a.doc”文件只占用一个文件的空间(10MB),两个文件的内容当然是完全一样的。如果编辑该文件的编辑器在修改保存文件时,依然保持源文件在 NTFS 文件夹中的位置,那么在“E:a.doc”上所作的改动会自动反映到“E:共享文件夹a.doc”中。同理,修改了“E:共享文件夹 a.doc”文件后,所作的修改也会立即反映到硬连接对应的“E:a.doc”文件。

创建硬连接之后,删除硬连接的副本(即连接点)只会将文件系统对文件数据的引用减一,只有删除所有的引用时,才真正删除文件。

“硬连接”还可以用于目录,这称为“目录连接点”(Junction)。例如,可以为“C:Applications”目录创建一个硬连接到“E:共享文件夹Applications”,则两个目录共享同样的存储空间,在“C:Applications”目录中对任何文件所作的改动都会立即反映到 “E:共享文件夹Applications”目录中对应的文件中去。同理,修改“E:共享文件夹Applications”目录中的文件,改动也会立即反映到“C:Applications”目录中去。

对于目录连接点需要注意:目录连接点连接到原来的目录,如果将源目录删除,则其连接点将不再可用,这与文件硬连接是不同的。

创建硬连接的操作方法:1、在 Windows 资源管理器中,找到需要创建硬连接的文件,如“E:a.doc”;2、右键点击该文件,选择“选择源连接点”。3、转到需要创建连接点的地方,如“E:共享文件夹”。4、右键点击资源管理器文件列表的空白位置,选择“创建硬连接”(如果是目录,可选择“创建连接点→目录连接点[或其他选项]”)——在资源管理器的状态栏中对操作命令有说明。

首先要说的是,软件介绍中说到“Link Shell Extension 是一个可以在 NTFS 文件系统中创建“硬连接”的 Windows 资源管理器扩展”,所以,我们没办法直接在NAS里进行操作。我目前的方法是在windows里映射NAS的硬盘,然后在windows的资源管理器里进行操作。当然,因为这篇文章说的是初探,所以我只简单尝试了建立硬链接文件,至于后期有没有什么坑,现在还说不好。

起初我想力推这款软件的初衷是居然发现这款软件可以实现文件夹的链接,一开始还在窃喜,谁知道刚才复制软件介绍的时候才发现这样的话“对于目录连接点需要注意:目录连接点连接到原来的目录,如果将源目录删除,则其连接点将不再可用,这与文件硬连接是不同的。”[piapia打脸]NAS服务器之软链接、硬链接之初探 这样看来的话还是不能偷懒。

不过这款软件还是比较方便了,首先是他有右键菜单,这比要输入路径什么的还是要方便多了。

我目前的使用方法:

方法一:

1、在源文件上点右键,选择“选择源连接点”

2、转到需要创建连接点的地方,点右键,选择“创建硬连接”

方法二:

1、打开两个资源管理器窗口,并并列排列,一个为源文件所在文件夹,一个是目标文件夹

2、按住右键将源文件拖至目标文件夹,在快捷菜单选择建立硬链接

因为关于文件夹硬链接还是有可预知的问题,所以暂且不对文件夹进行批量操作了,虽然现在也是一个文件一个文件的操作,但是可以鼠标单手操作,还是方便多了。

下一步的设想:

1、对于已用tmm整理好的媒体库文件

使用上述的两种方法,逐一的将硬链接媒体文件(与源文件使用同一份存储空间)拖至电影独立的文件夹中,删掉原来复制过来的媒体文件(因为是复制,所以和源文件一样,也要占用一份存储空间),释放空间,然后将硬链接的文件改名,从而实现硬链接文件替换“实体占用存储空间”文件的目的。

2、对于新的还未用过tmm整理的媒体文件

使用上述方法,将硬链接文件先移到媒体库引用文件夹中,然后用tmm进行改名整理管理,这样的话硬链接文件就会被tmm自动改名和移到影片独立的文件夹中,这样硬链接文件是否还会有效?需要下一步测试之后才知道。

目前存在的问题(求大佬们帮忙解惑)

1、因为关于硬链接的介绍中有说到“不能跨分区做硬链接”,所以这个分区是怎么定义的,我在使用中感觉硬链接文件必须建立在同一个根目录下,如果跨目录的话就可能建立不成功要报错,但是这个根目录具体可以深到哪一层,有没有一个简单的判别方法,总不能一个个去试吧。比如在unraid系统中,共享文件夹download和video中就不可以互通建硬链接文件,但是在各自文件夹中则可以,是不是分区就是以共享文件夹这一层来区别?

2、关于硬链接文件的介绍中有说到“多个硬链接的文件具有相同的inode号”,经过我的测试,在群晖系统中,硬链接文件确实是具有同一个inode号,但是unraid系统下,硬链接的文件创建时期什么倒是相同,但是inode号并不一样,是因为unraid系统没有严格遵循linux的文件规则么?

总结

NAS所基于的linux框架自带的硬链接文件功能可以帮助我们实现存储空间的多次复用,希望可以对做家庭媒体服务器的朋友提供一些参考。有更优的解决方案也请朋友们留言,我会积极学习的!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3