cp 命令两个高效的用法

by 恒心

博客 – 伯乐在线 / 2017-08-12 23:35

Linux 中高效的备份拷贝命令

在 Linux 上能使用鼠标点来点去的图形化界面是一件很美妙的事……但是如果你喜欢的开发交互环境和编译器是终端窗口、Bash 和 Vim,那你应该像我一样经常和终端打交道。

即使是不经常使用终端的人,如果对终端环境深入了解也能获益良多。举个例子—— cp 命令,据 维基百科 的解释,cp (意即 copy)命令是第一个版本的 Unix 系统的一部分。连同一组其它的命令 lsmvcdpwdmkdirvishsed awk ,还有提到的 cp 都是我在 1984 年接触 System V Unix 系统时所学习的命令之一。cp 命令最常见的用法是制作文件副本。像这样:

cp sourcefile destfile

在终端中执行此命令,上述命令将名为 sourcefile 的文件复制到名为 destfile 的文件中。如果在执行命令之前 destfile 文件不存在,那将会创建此文件,如果已经存在,那就会覆盖此文件。

这个命令我不知道自己用了多少次了(我也不想知道),但是我知道在我编写测试代码的时候,我经常用,为了保留当前正常的版本,而且又能继续修改,我会输入这个命令:

cp test1.py test1.bak

在过去的30多年里,我使用了无数次这个命令。另外,当我决定编写我的第二个版本的测试程序时,我会输入这个命令:

cp test1.py test2.py

这样就完成了修改程序的第一步。

我通常很少查看 cp 命令的参考文档,但是当我在备份我的图片文件夹的时候(在 GUI 环境下使用 “file” 应用),我开始思考“在 cp 命令中是否有个参数支持只复制新文件或者是修改过的文件。”果然,真的有!

高效用法 1:更新你的文件夹

比如说在我的电脑上有一个存放各种文件的文件夹,另外我要不时的往里面添加一些新文件,而且我会不时地修改一些文件,例如我手机里下载的照片或者是音乐。

假设我收集的这些文件对我而言都很有价值,我有时候会想做个拷贝,就像是“快照”一样将文件保存在其它媒体。当然目前有很多程序都支持备份,但是我想更为精确的将目录结构复制到可移动设备中,方便于我经常使用这些离线设备或者连接到其它电脑上。

cp 命令提供了一个易如反掌的方法。例子如下:

在我的 Pictures 文件夹下,我有这样一个文件夹名字为 Misc。为了方便说明,我把文件拷贝到 USB 存储设备上。让我们开始吧!

me@desktop:~/Pictures$ cp -r Misc /media/clh/4388-D5FE     me@desktop:~/Pictures$

上面的命令是我从按照终端窗口中完整复制下来的。对于有些人来说不是很适应这种环境,在我们输入命令或者执行命令之前,需要注意的是 me@mydesktop:~/Pictures 这个前缀,me 这个是当前用户,mydesktop 这是电脑名称,~/Pictures 这个是当前工作目录,是 /home/me/Pictures 完整路径的缩写。

我输入这个命令 cp -r Misc /media/clh/4388-D5FE 并执行后 ,拷贝 Misc 目录下所有文件(这个 -r 参数,全称 “recursive”,递归处理,意思为本目录下所有文件及子目录一起处理)到我的 USB 设备的挂载目录 /media/clh/4388-D5FE

执行命令后回到之前的提示,大多数命令继承了 Unix 的特性,在命令执行后,如果没有任何异常什么都不显示,在任务结束之前不会显示像 “execution succeeded” 这样的提示消息。如果想获取更多的反馈,就使用 -v 参数让执行结果更详细。

下图中是我的 USB 设备中刚刚拷贝过来的文件夹 Misc ,里面总共有 9 张图片。

134531uhe4siy48m1t4goo

假设我要在原始拷贝路径下 ~/Pictures/Misc 下添加一些新文件,就像这样:

134531uhe4siy48m1t4goo

现在我想只拷贝新的文件到我的存储设备上,我就使用 cp 的“更新”和“详细”选项。

me@desktop:~/Pictures$ cp -r -u -v Misc /media/clh/4388-D5FE     'Misc/asunder.png' -> '/media/clh/4388-D5FE/Misc/asunder.png'     'Misc/editing tags guayadeque.png' -> '/media/clh/4388-D5FE/Misc/editing tags guayadeque.png'     'Misc/misc on usb.png' -> '/media/clh/4388-D5FE/Misc/misc on usb.png'     me@desktop:~/Pictures$

上面的第一行中是 cp 命令和具体的参数(-r 是“递归”, -u 是“更新”,-v 是“详细”)。接下来的三行显示被复制文件的信息,最后一行显示命令行提示符。

通常来说,参数 -r 也可用更详细的风格 –recursive。但是以简短的方式,也可以这么连用 -ruv

高效用法 2:版本备份

回到一开始的例子中,我在开发的时候定期给我的代码版本进行备份。然后我找到了另一种更好用的 cp 参数。

假设我正在编写一个非常
有用的 Python 程序,作为一个喜欢不断修改代码的开发者,我会在一开始编写一个程序简单版本,然后不停的往里面添加各种功能直到它能成功的运行起来。比方说我的第一个版本就是用 Python 程序打印出 “hello world”。这只有一行代码的程序就像这样:

print 'hello world'

然后我将这个代码保存成文件命名为 test1.py。我可以这么运行它:

me@desktop:~/Test$ python test1.py     hello world     me@desktop:~/Test$

现在程序可以运行了,我想在添加新的内容之前进行备份。我决定使用带编号的备份选项,如下:

clh@vancouver:~/Test$ cp --force --backup=numbered test1.py test1.py     clh@vancouver:~/Test$ ls     test1.py  test1.py.~1~     clh@vancouver:~/Test$

所以,上面的做法是什么意思呢?

第一,这个 –backup=numbered 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。

第二,如果源文件和目标文件名字是一样的。通常我们使用 cp 命令去拷贝成自己,会得到这样的报错信息:

cp: 'test1.py' and 'test1.py' are the same file

在特殊情况下,如果我们想备份的源文件和目标文件名字相同,我们使用 –force 参数。

第三,我使用 ls (意即 “list”)命令来显示现在目录下的文件,名字为 test1.py 的是原始文件,名字为 test1.py.~1~ 的是备份文件

假如现在我要加上第二个功能,在程序里加上另一行代码,可以打印 “Kilroy was here.”。现在程序文件 test1.py 的内容如下:

print 'hello world'     print 'Kilroy was here'

看到 Python 编程多么简单了吗?不管怎样,如果我再次执行备份的步骤,结果如下:

clh@vancouver:~/Test$ cp --force --backup=numbered test1.py test1.py     clh@vancouver:~/Test$ ls     test1.py test1.py.~1~ test1.py.~2~     clh@vancouver:~/Test$

现在我有有两个备份文件: test1.py.~1~ 包含了一行代码的程序,和 test1.py.~2~ 包含两行代码的程序。

这个很好用的功能,我考虑做个 shell 函数让它变得更简单。

最后总结

第一,Linux 手册页,它在大多数桌面和服务器发行版都默认安装了,它提供了更为详细的使用方法和例子,对于 cp 命令,在终端中输入如下命令:

man cp

对于那些想学习如何使用这些命令,但不清楚如何使用的用户应该首先看一下这些说明,然后我建议创建一个测试目录和文件来尝试使用命令和选项。

第二,兴趣是最好的老师。在你最喜欢的搜索引擎中搜索 “linux shell tutorial”,你会获得很多有趣和有用的资源。

第三,你是不是在想,“为什么我要用这么麻烦的方法,图形化界面中有相同的功能,只用点击几下岂不是更简单?”,关于这个问题我有两个理由。首先,在我们工作中需要中断其他工作流程以及大量使用点击动作时,点击动作可就不简单了。其次,如果我们要完成流水线般的重复性工作,通过使用 shell 脚本和 shell 函数以及 shell 重命名等功能就能很轻松的实现。

你还知道关于 cp 命令其他更棒的使用方式吗?请在留言中积极回复哦~


作者简介:

Chris Hermansen – 1978 年毕业于英国哥伦比亚大学后一直从事计算机相关职业,我从 2005 年开始一直使用 Linux、Solaris、SunOS,在那之前我就是 Unix 系统管理员了,在技术方面,我的大量的职业生涯都是在做数据分析,尤其是空间数据分析,我有大量的编程经验与数据分析经验,熟练使用 awk、Python、PostgreSQL、PostGIS 和 Groovy。

cp 命令两个高效的用法,首发于文章 – 伯乐在线

Shared via Inoreader

cp 命令两个高效的用法

玩转路由之 AsusWRT-Merlin 与 Entware

开源中国社区最新推荐博客 / 2017-08-25 17:45

AsusWRT-Merlin

AsusWRT-Merlin 是基于华硕路由器固件的一个嵌入式 Linux 系统,它号称是“增强版”的华硕固件。并且它不仅限于安装在华硕设备上,例如我自己的网件(Netgear)路由器(R7000)也能完美的使用。

跟 Merlin 类似的还有大名鼎鼎的 OpenWRT 以及其衍生项目,例如 LEDE、DD-WRT 等等。相比几乎完全随意读写的 OpenWRT,Merlin 并没有那么自由,它的文件系统多数都是只读的(这点在之后会有解释)。
由于某些原因(下面会解释)我的路由器不能用 OpenWRT,而显然 OpenWRT 是最适合我的。但是,不能随意读写文件系统的 Merlin 不表示就扼杀了 Linux 的开放性,这也是我最终依旧选择 Merlin 的理由。

PS:Merlin 固件在国内,很多路由器党都亲切的叫它:梅林。

项目地址:https://github.com/RMerl/asuswrt-merlin

Entware

Entware 是一个嵌入式 Linux 设备的软件仓库集成工具,也就是传统 Linux 上的包管理工具,例如 Debian 的 dpkg、CentOS 的 yum 等。
它们可以通过网络在远程仓库上拉取并安装所需要的包,同时自动解决依赖问题,是系统上不可或缺的一部分。典型的例子就是:

在 Debian/Ubuntu 上,这样安装仓库软件:

   apt install vim   

使用本地安装包:

   dpkg -i vim.deb   

Entware 也提供这样的 CLI 工具,它就是 opkg,从名字就能看出来模仿的是 dpkg。opkg 类似于 apt 和 dpkg 的结合,它既能管理本地包也能安装远程仓库的包。例如:

   opkg install vim   opkg install ./vim.ipk   

介绍完了主要的两大角色,就要开始一步一步来配置环境了。

安装 Merlin

  1. 确认 Merlin 是否支持设备

    这里搜索你的路由器型号足以确认。为了保险起见,建议再去谷歌和百度搜索“路由器型号+梅林”字眼看下是否有坑,例如我当初就没有搜索借鉴下前人的经验,冲着 OpenWRT 去买的 R7000 到头来发现却是存在大坑的。如果我在这之前调查过,应该也不会买这个路由器了。

  2. 从官方固件刷入梅林

    假如你是 Netgear 的路由器,当你在下载好固件压缩包以后,解压出来,有两个文件是可能用到其一的。一个是从官方升级到梅林的 .chk 后缀的文件。 路由器 WEB UI 上选择「管理」-「路由器升级」页面。 选择 .chk 刷入,即成功。

  3. 从梅林固件升级

    如果你已经是梅林固件,不要设置任何东西,直接选择 .trx 升级就是。 路由器 WEB UI 上选择「系统管理」,切换到「固件升级」页面。完成即成功。

注意:很多论坛上的教程都是普通玩家一传十,十传百流下来的内容。其实很多都是错误的。例如,升级之前和之后他们强调恢复出厂设置各一次,其实这是没必要的,但是做了也不会有坏处。

恢复出厂设置附加说明:恢复出厂设置的主要目的是重置 nvram 中的内容(一般是配置项),假设你从 Merlin 刷回原厂,nvram 中的配置项可能是不兼容的,那么你确实最好应该升级时勾上恢复设置。但是如果你是 Merlin 或者原厂之间的版本升级,一般来讲恢复出厂设置是多余的。刷之前恢复一次,刷之后又恢复一次,更是没事找事。

误传最大的是,很多人在教程里边把 .chk 文件称之为“过渡固件”,刷了“过渡固件”再刷 .trx 固件才是完整的梅林系统。这是多此一举的,.chk 格式的封装是为了方便官方固件用户升级到梅林的,.trx 是方便旧版梅林固件升级新版的。并不需要第二次刷入 .trx ,因为所谓的 .trx 过渡固件其实就是完整的系统。

Merlin 的基本设置

假设你已经安装好了,这里介绍几个必要的设置项。它跟路由器功能无关,跟梅林的“玩法”有关。在这之前你得手动配置好网络。

  1. 开启 SSH

    选择「系统管理」,切到「系统设置」页面。SSH Deamon 栏目下面,将 SSH 功能开启,密码或者 Key 随意,能让你 SSH 进入路由器系统即可。

  2. 启用 JFFS 自定义脚本和配置

    Persistent JFFS2 partition 栏,Enable JFFS custom scripts and configs 选择「是」,把上面的格式化也选择上。

确保你记得路由器用户名和密码,重启路由器。然后启动以后就可以 SSH 到路由器后台系统了,用户名和密码跟路由器登录用的是同一个。

此时,这个系统是没有包管理功能的,并且多数目录都是只读的。虽然你是 root 权限的用户,但是你没法在随意写入文件。例如,你在根目录创建一个文件夹,会提示:

   admin@NETGEAR-9599:/# mkdir test_dir   mkdir: can't create directory 'test_dir': Read-only file system   

你在绝大部分目录下都是如此,虽然你可以在 /tmp 目录下任意写入内容,但是毕竟是 /tmp,重启可能就消失了。
诈一看,这个系统不能自由的写入内容的话,好像什么用都没有了。其实不是,既然内置空间是“有保护”的,那么我们可以用外置设备充当额外的“硬盘空间”,就可以有完全的读写权限的空间使用了。当然这个“硬盘”对于路由器而言,就是外置的 U 盘。R7000 支持插入一个 U 盘。

自动挂载 U 盘

上面提过了,梅林用 Entware 需要一个可随意读写的空间,这个空间需要挂载到 /opt 目录。插上你的 U 盘,执行 df 命令:

   admin@NETGEAR-9599:/tmp/home/root# df   Filesystem 1K-blocks Used Available Use% Mounted on   /dev/root 27008 27008 0 100% /   devtmpfs 127756 0 127756 0% /dev   tmpfs 127860 588 127272 0% /tmp   /dev/mtdblock4 90880 2196 88684 2% /jffs   /dev/sda1 30384076 229480 28611172 1% /tmp/mnt/sda1   

从上面的输出可以看到,我的 U 盘是 sda1 设备。记住这个设备名称,直接终端执行以下内容:

   cat  /tmp/script_usbmount.tmp   if [ $1 = "/tmp/mnt/sda1" ]   then   ln -sf $1 /tmp/opt   /opt/etc/init.d/rc.unslung start   fi   EOF   nvram set script_usbmount="`cat /tmp/script_usbmount.tmp`"   cat  /tmp/script_usbumount.tmp   if [ $1 = "/tmp/mnt/sda1" ]   then   /opt/etc/init.d/rc.unslung stop   fi   EOF   

其中“/tmp/mnt/sda1”替换为自己的 U 盘路径,然后执行(将上面的脚本内容永久的保存在 NVRAM 中):

   nvram set script_usbumount="`cat /tmp/script_usbumount.tmp`"   nvram commit   

重启即可看到效果。其目的是自动挂载(卸载) U 盘到 /opt 目录。待系统启动以后,cd 进入 /opt 自行确认是否是 U 盘路径。

注意:在使用 U 盘前,请先格式化成 Linux 所兼容的文件系统,对于 R7000 的 Merlin 推荐 ext4 格式 。

安装 Entware

如果你在谷歌搜索 Entware 然后按照项目 wiki 安装那就大错特错了。Entware 有两个项目,一个是 entware 一个是 entware-ng,如果你不幸企图安装到前者,那就更倒霉了。因为那不是给 Merlin 准备的
或者说不支持 Merlin,因为它很早就过时了。

其实 Merlin 在 15 年开始的某个版本上就已经内置了 Entware 的安装脚本了,直接终端执行即可:

   entware-setup.sh   

进入交互:

   admin@NETGEAR-9599:/tmp/home/root# entware-setup.sh   Info: This script will guide you through the Entware installation.   Info: Script modifies "entware" folder only on the chosen drive,   Info: no other data will be changed. Existing installation will be   Info: replaced with this one. Also some start scripts will be installed,   Info: the old ones will be saved on Entware partition with name   Info: like /tmp/mnt/sda1/jffs_scripts_backup.tgz   Info: Looking for available partitions...   [1] --> /tmp/mnt/sda1   => Please enter partition number or 0 to exit   [0-2]:   

选择你的 U 盘路径,因为 R7000 只能插一个外置储存所以通常是 1。之后就是不断的回车确认即可。等待安装完成以后,执行 opkg 命令,看是否正常,如果无异常,恭喜你,Entware 环境安装成功。

此时,你进入 /opt 目录,会发现生成了以下文件系统结构:

   admin@NETGEAR-9599:/tmp/home/root# cd /opt/   admin@NETGEAR-9599:/tmp/mnt/sda1/entware# ls   bin etc lib sbin share tmp usr var   admin@NETGEAR-9599:/tmp/mnt/sda1/entware#   

没错,Entware 将会把软件安装在这里,并且一切仓库软件所需要的东西都会在这里有一份跟标准安装所依赖的一样的结构目录文件。

例如 nginx 的配置目录在 /etc/nginx 中,但是根目录的 /etc 不允许写入内容,那么 Entware “模拟”一份同样的环境,换到 /opt/etc/nginx 即可。随意读写的 /opt 目录此时相当于系统的根目录。
软件可执行文件会被安装到 /opt/bin 中,并且该路径存在于 PATH 变量中。跟正常 Linux 系统安装到 /usr/bin 或者 /usr/local/bin 是一样的效果。

PS:刚装上以后必须得执行一次更新命令下载仓库索引到本地:

   opkg update   

Optware

Optware 是一个将环境安装在 /opt 目录的软件集成环境,如果你跟我一样被 Merlin 官方 wiki “坑过”,那么你可能在使用 Entware 之前先使用的 Optware,因为 wiki 上 Optware 的内容在 Entware 之前。

咋一看,好像 Optware 更适合梅林。但是 Entware 也完全的支持 Merlin 这种 /opt 环境,并且更加完善,同时也号称 Optware 的替代品。
在使用 Entware 之前我用了 Optware,Optware 有自己源,跟现在的 Entware 也有一点区别。opkg 和 ipkg 命名不同就不提了,在 Optware 中是有 /opt/local 目录的,但是 Entware 没有。如果在 Merlin 上用 Optware 也不是不行,只是 Optware 不仅没有 Entware 支持好,并且还有很明显的 BUG。所以这里,我就提一下 Optware,并不推荐大家用 Optware。

如果你要问我,Optware 有什么明显 BUG?

  1. /opt/local 中的 bin 以及 sbin 目录不在环境变量中,会导致许多软件的可执行入口失效,需要:

       export PATH=/opt/local/bin:/opt/local/sbin:$PATH   
  2. /opt/etc 目录缺少例如 profile 这样的系统配置文件

  3. python 安装 pip 以后,无法获取任何包。因为 pypi 是 HTTPS,Optware 默认的 SSL 支持有问题

上面也说过了 ipkg 是自己的源,没有国内的镜像站导致安装软件速度过于缓慢。而且 ipkg 的源恐怕远不如 opkg 源的更新速度和质量以及数量。例如很重要的 python-pip 包就没有,需要用 python 自己根据脚本安装,安装到 /opt/local 目录以后又要解决环境变量问题。

安装 Python

到这一步,Merlin 已经配置好了,Entware 也完成了,基本大功告成了,此时的 Merlin 可以当作一个自由的嵌入式 Linux 使用了。那么,我首先推荐安装支持最为完美的脚本语言 Python 的环境:

安装 python(默认 2.7 版本):

   opkg install python   

安装 pip

   opkg install python-pip   

此时别急,这时候的 pip 是有问题的,几乎安装不上任何包,但是并不是硬件架构的原因,是因为 setuptools 版本太旧了。需要:

   pip install --upgrade setuptools   

升级 setuptools 即可。你以为这样就能用了?

慢,如果你就此打住的话,会发现许多包含 native code 的包编译不了,原因当然是没有 python-dev 了。但是你直接安装 python-dev 又会出现这样的错误:

   Collected errors:   * check_data_file_clashes: Package python-dev wants to install file /opt/lib/libpython2.7.so   But that file is already provided by package * python-base   * check_data_file_clashes: Package python-dev wants to install file /opt/lib/libpython2.7.so.1.0   But that file is already provided by package * python-base   * opkg_install_cmd: Cannot install package python-dev.   

原因和 python-base 包的文件冲突了。需要这样(覆盖掉):

   opkg install python-dev --force-overwrite   

执行完上面的命令后,此时 Python 才能完美使用。

有关 Git

Git 其实没有啥问题,但是,你很有可能装错包了。如果你是直接 opkg install git 安装的话,你将无法拉取 HTTPS 协议的 git 地址。也就是说,这么大的 github 克隆不下来任何仓库。你需要安装它:

   opkg remove git   opkg install git-http   

此时的 git 才能正常克隆 https 协议的仓库。

给系统设置虚拟内存

依次执行:

   dd if=/dev/zero of=/tmp/mnt/sda1/swapfile bs=1024 count=512000   mkswap /tmp/mnt/sda1/swapfile   swapon /tmp/mnt/sda1/swapfile   

然后,创建启动脚本:

   echo '   #!/bin/sh   # Turn On Usage Of Swapfile   if [ -f "/tmp/mnt/sda1/swapfile" ];then   swapon /tmp/mnt/sda1/swapfile   echo "Turning Swapfile On"   fi   ' >> /jffs/scripts/post-mount   

给执行权限:

   chmod a+rx /jffs/scripts/*   

大功告成。如果你对 swap 大小不满意请自行修改(注意 U 盘路径)。

附加

  1. 关于为什么 R7000 不能使用 OpenWRT?

    OpenWRT 是支持 R7000 的,并且我也用过。我指的是无法正常使用路由器的功能,最重要的无线功能是无法启用的。原因是 R7000 的相关硬件的驱动是闭源的。如果你完全将其作为有线路由器来使用,OpenWRT 也未尝不可。

  2. 为什么 Merlin 可以让 R7000 使用无线?

    因为华硕的一些路由器跟 R7000 用了同样的硬件,Merlin 有对应驱动的内核。但也因为如此,R7000 的 Merlin 内核一直处在 2.6 版本,这对于一个常更新的系统是一个很大的弊端。

  3. 为什么华硕不更新驱动支持新内核?

    貌似很多人都有这个想法。但其实,驱动是对应厂商提供的,华硕也无能为力。在硬件不开源以及厂商不更新的情况下,可能只能把这个 2.6 内核使用下去。

  4. 2.6 这么旧的内核有什么短板?

    目前很多公司生产环境 RH 系列的系统都是用的 2.6 内核,对于大多数情况而言是没有影响的。但是不排除有例如一些新元素不对旧内核进行支持的情况(例如高版本的 Docker、TCP-DDR 算法等)。当然,这种情况在嵌入式系统上概率会更小。

关于内核版本

在后续的了解中,我知道
原来 DD-WRT 是能在高版本内核(最新版已经是 4.4)中使用无线功能的。原因是 DD-WRT 和厂商有商业关系,所以解决了驱动问题。
于是我兴奋的去尝试了 DD-WRT,不得不说它是个非常优秀的路由器系统,有庞大的配置项。但可惜的是,我一直无法成功配置 Optware 或者 Entware 的环境。并且是由于一些莫名其妙的问题导致的,让人匪夷所思。例如,在 DD-WRT 的系统上,我无法执行生成的任何一个二进制可执行文件,这导致所有东西无法安装或者安装以后无法运行。

经过长时间的资料搜索,仍然无法解决。后来就刷回 Merlin 了,这也是我强烈推荐 Merlin 的原因。DD-WRT 可以一试,希望你们没有或者能解决我当时没能解决的问题。

UPDATE:DD 的所有问题已经解决,详情点击这里

后续

后面还有解决 Ruby 的 gem、NodeJs 不兼容等问题和对 Lua 的推荐。以及一些有实际作用的应用,有时间会慢慢补充上来。

关于为什么只测试和使用脚本语言,因为 opkg 好像没有 Java,其他编译型语言需要交叉编译后上传二进制文件,麻烦,没特殊情况不会考虑使用。

Shared via Inoreader

玩转路由之 AsusWRT-Merlin 与 Entware

域名解析>>记录类型说明

开源中国社区最新推荐博客 / 2017-08-25 16:43

A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。   说明:用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置自己域名的二级域名。   MX :是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。  CNAME (Canonical Name)记录,(alias from one domain name to another)通常称别名指向  可以将注册的不同域名统统转到一个主域名上去!与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址!  URL (Uniform Resource Locator )转发:网址转发  功能:如果您没有一台独立的服务器(也就是没有一个独立的IP地址)或者您还有一个域名B,您想访问A域名时访问到B域名的内容,这时您就可以通过URL转发来实现。 添加URL转发时,值需要是一个合法的URL地址:  NS(Name Server)记录  是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。    您注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个    DNS域名服务器来进行解析的,    DNS服务器NS记录地址一般以以下的形式出现:    ns1.domain.com    ns2.domain.com  PTR记录  邮件交换记录:A记录和PTR记录,A记录解析名字到地址,而PTR记录解析地址到名字。地址是指一个客户端的IP地址,名字是指一个客户的完全合格域名。  TXT 记录,一般指为某个主机名或域名设置的说明  

© 著作权归作者所有

Shared via Inoreader

域名解析>>记录类型说明

[新消息]自己动手组建一个 NAS(黑群晖+洗白) | 弹霄博科

[新消息]自己动手组建一个 NAS(黑群晖+洗白) | 弹霄博科

实在忍不了某度云限速 200k/s(体验会员 10M/s),秉承着私有云大法好,搞了一台黑群晖给硬洗白了,可以使用除升级外的一切功能。

首先说几句

测试通过,仅供参考

不承担硬件损坏,软件故障,数据丢失的责任

仅限交流和学习,低调使用,如果资金充裕请不要使用黑群晖

硬件选型

型号
主板 ASROCK J3455-ITX
内存 Samsung DDR3L 1600 4G(拆)
机箱 鼎鑫 4盘位 NAS 机箱
电源 森林人小1U 标定500W
连接线 细 SATA 线*4 主板插针转USB母头

一些经验:

主板:ASROCK J3455-ITX 是板载4个 SATA 的,其中两个原生支持,两个是转接出来的,网上一些两个 SATA 的且带 PCI-E 的板子也是可以选择的,例如 J3160 Q1900 等,只需要一张 PCI-E 转 SATA 的卡而已。
ASROCK J3455-ITX

内存:ASROCK J3455-ITX 据说是非常挑内存的,我这个内存是从本子上拆的,一次点亮,网上好多人说这个板子对三星的条子兼容性不是很好,所以如果你想买内存,请参考 内存支持表

机箱:某宝鼎鑫服务器机箱家的 NAS 机箱应该是同类产品中较为便宜的了。5个硬盘位,4个热插拔,1个2.5系统盘,内置暴力风扇(8028高速双滚珠),小巧且漂亮,摆在家里也是个挺能装逼的物件。但是这个机箱在设计上还是有需要提升的地方的,后面图片上我再详细说。

电源:小1U电源即可,具体要多大功率的根据主板和硬盘量来定。

连接线:先说 SATA 线,由于机箱设计的问题,如果使用那种标准 SATA 线,会差不进去线,所以我买了 SATA 带铝箔屏蔽的数据线。主板插针转USB母头是做什么用的,因为黑群晖启动需要一个引导盘,我们会把 XPEnoboot 写入到 U 盘里,使用这个可以把引导盘“藏入”机箱内,更加美观。
sata

usb-9

组装

不细说,上图:


就这样把引导盘藏在了机箱内部。


这个主板接口挺全的,还是 HDMI2.0,搞 NAS 还是 HTPC 都是很强的。


这张图就看出来,机箱设计还存在一点小毛病,后面是风扇,前面就是背板,间隙很小,背板上很难插上宽 SATA 线,背板在供电上也只留了一个 4p 接口,可以说为了成本能省就省了。


这个电源指示灯,光污染太厉害,晚上省了小夜灯了。。。

黑群晖&洗白

1.前期准备:

U盘两个,容量 4G 左右即可。

U盘工具:通用PE工具箱7.0、Win32DiskImager、UltraISO、ChipGenius 4.0

Synology Assistant助手:SynologyAssistantSetup-5.2-5005.exe

启动镜像软件:XPEnoboot_DS3615xs_5.2-5644.5.img

DSM系统:DSM_DS3615xs_5644.pat

群晖SN和MAC生成器:Synology-mod-new.zip

MAC地址修改工具:MAC149D.rar

应用软件和U盘工具就不给下载地址了,手工百度有很多。

2.制作 XPEnoboot

计算群晖系统需要的序列号 SN 和 MAC 地址。解压 Synology-mod-new.zip 文件,用 EXCLE 打开 Synology-mod-new.xlsm,注意打开的时候需要启用宏。在工作表“SynologySerial”里选择好群晖系统的型号(DS3615xs)后,即出现一个 SN,把这个 SN 保存好,然后在工作表“Synology MAC”里,在表格的空白地方随便双击然后再单击表格某处,则会随机生成一个新的 MAC 地址,同样把这个 MAC 记好。

用ChipGenius软件读取引导盘(准备刷入 XPEnoboot 的盘)的设备ID,即 vid,pid 段,把这俩也记好。

用 UltraISO 提取 XPEnoboot_DS3615xs_5.2-5644.5.img 中的 syslinux.cfg,用记事本打开,找到类似的如下字段“sn=B3J4N01003 vid=0x0EA0 pid=0x2168”修改成“sn=刚才算的SN vid=0x刚才读的vid pid=0x刚才读的pid mac1=刚才算的MAC(不带分隔符)”,保存。把 syslinux.cfg 附加回 XPEnoboot_DS3615xs_5.2-5644.5.img 保存,使用 Win32DiskImager 刷入准备的引导U盘(XPEnoboot 盘)。

3.准备刷 MAC(硬洗白)

用通用PE工具箱7.0制作一个 U 启动(PE 盘),把 MAC149D.rar 解压后的 MAC 放在 U 启动盘的根目录下。

4.调整 BIOS

这玩意已经不叫 BIOS 了,搞起来稍微别扭一点,按照官网的说法是这个板子只支持 Win10,但其实可以使用兼容模式来运行其他系统。

开机按 F2 进入 UEFI,确定一下 UEFI 版本,最新是 1.2,不是的话就升级一下。

其实上电之后,暴力风扇就飚了,调整风扇速度来静音,在 H/W Monitor 选项卡,把机箱风扇调整为自动即可。

5.刷
写 MAC

插上 PE 盘,开机按 F2 进入 UEFI,进入 Boot 选项卡,启用 CSM 兼容模块。刷新,调整引导选项选择 PE 盘,记得选 USB 模式,用 UEFI 是启不来的。

进入 PE 界面,选 MaxDos —> MaxDos9.2 ->无盘,到 A: 状态。

C:  cd MAC  MAC C 刚才算的MAC(不带分隔符)  

等待即可,可能时间会略长,但千万别断电,系统出现“PGEFuse is Sucessful!!!”,说明修改MAC成功,然后关机。

6.安装 DSM

给 NAS 装上硬盘,插上 XPEnoboot 盘,开机调整引导选项选择 XPEnoboot 盘,保存继续,待进入 XPEnoboot 界面,选择“XPEnology DSM 5.2-5644 Install/Upgrade”回车,等待出现“DiskStation login:”后就去与 NAS 同一局域网上的电脑安装 DSM 系统。

在同一局域网的 PC 电脑上安装完群晖助手(SynologyAssistantSetup-5.2-5005.exe)后,打开 Synology Assistant,找到 NAS 机器,双击安装,浏览选择你局域网电脑上的 DSM_DS3615xs_5644.pat,开始全新安装,剩下的按步骤安装就好了。

7.后期优化

待安装完成,使用 Synology Assistant 联机,用管理员账号登陆,提示配置更新。选择“仅重要更新”并取消“自动检查更新”,因为黑群晖洗白也不能进行大版本更新,为了数据安全起见禁用更新为妙。

给群晖加第三方软件源:套件中心——>设置——>套件来源——>添加——>名称:SynoCommunity 位置:http://packages.synocommunity.com/ ——>信任来源

8.Synology 账号

洗白之后就可以不要脸的使用群晖设备一样的 QuickConnect 和 DDNS 了。

控制面板——>QuickConnect——>注册&登陆 Synology 账号——>设置 QuickConnectID

设置成功会如图所示,这说明你的设备已经被硬洗白。

9.WOL远程唤醒设置

控制面板——>硬件和电源——>勾选“启用‘局域网1’的局域网唤醒”,保存。

主板设置——>Boot 选项卡——>允许从板载 Lan 引导:是,保存。

测试

功耗测试:(30瓦左右)

内网拷贝测试:(有线千兆内网)

磁盘阵列:(SHR 容灾)

本文标题:自己动手组建一个 NAS(黑群晖+洗白)

文章作者:小谈谈

发布时间:2017-02-13, 10:43:59

最后更新:2017-02-13, 16:36:06

原始链接:https://txisfine.cn/2017/02/13/new-a-black-synology.html

许可协议: “署名-非商用-相同方式共享 4.0” 转载请保留原文链接及作者。

[新消息]自己动手组建一个 NAS(黑群晖+洗白) | 弹霄博科

新版免费Alphassl泛域名证书申请

by 厘米

厘米天空 / 2017-08-24 12:40

去年6月份的时候本站介绍了免费Alphassl泛域名证书的获取方式,俺也申请了几个玩,可惜的是前段时间那个网站不做了。今天在逛论坛的时候发现80老总恢复了免费Alphassl证书的提供,正好手中的证书快过期了,于是申请续了一张玩玩,顺便记录下过程,每日限50张。

新版免费Alphassl证书申请地址:

http://alpha.80host.com/

http://alpha.ceranetworks.net/

两个地址都可,是由80host老总提供。

准备工作

申请证书前需要准备的就是一张CSR证书请求文件,可使用在线工具https://csr.chinassl.net/generator-csr.html生成。这里需要注意的一点是CSR里域名那里一定要填*.cmsky.com这样的,*代表前面子域名是泛域。还有一项就是先把域名的Whois隐私保护关闭,后面需要接收邮件。

申请步骤

我们打开上面的申请地址,然后开始点击开始签发。然后会提示你上传CSR,这时候上传你之前准备好的CSR文件,如果没问题就可以下一步。

免费alphassl证书

接下来需要填写一下个人信息,填完提交下一步。

免费alphassl证书

这一步很关键,选择接收验证邮件的邮箱,能收到邮件基本就能成功了。

免费alphassl证书

如果邮箱没问题下面一步就会提示你发送成功,赶紧去邮箱收alphassl发来的验证邮件吧。

免费ssl证书

打开邮箱中的验证邮件,点击验证的链接。点击I APPROVE我同意。等几分钟就会收到证书邮件了。

免费alphassl证书

补全证书链

收到证书后如果某些手机浏览器提示有风险就将以下一段加到证书后面,补全证书链。

-----BEGIN CERTIFICATE-----  MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkGA1UEBhMCQkUx  GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds  b2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAwMDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJBgNV  BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYDVQQDExlBbHBoYVNTTCBDQSAt  IFNIQTI1NiAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gHs5OxzYPt+j2q3  xhfjkmQy1KwA2aIPue3ua4qGypJn2XTXXUcCPI9A1p5tFM3D2ik5pw8FCmiiZhoexLKLdljlq10d  j0CzOYvvHoN9ItDjqQAu7FPPYhmFRChMwCfLew7sEGQAEKQFzKByvkFsMVtI5LHsuSPrVU3QfWJK  pbSlpFmFxSWRpv6mCZ8GEG2PgQxkQF5zAJrgLmWYVBAAcJjI4e00X9icxw3A1iNZRfz+VXqG7pRg  IvGu0eZVRvaZxRsIdF+ssGSEj4k4HKGnkCFPAm694GFn1PhChw8K98kEbSqpL+9Cpd/do1PbmB6B  +Zpye1reTz5/olig4hetZwIDAQABo4IBIzCCAR8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI  MAYBAf8CAQAwHQYDVR0OBBYEFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MEUGA1UdIAQ+MDwwOgYEVR0g  ADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hbHBoYXNzbC5jb20vcmVwb3NpdG9yeS8wMwYD  VR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWduLm5ldC9yb290LmNybDA9BggrBgEF  BQcBAQQxMC8wLQYIKwYBBQUHMAGGIWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL3Jvb3RyMTAf  BgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQsFAAOCAQEAYEBoFkfn  Fo3bXKFWKsv0XJuwHqJL9csCP/gLofKnQtS3TOvjZoDzJUN4LhsXVgdSGMvRqOzm+3M+pGKMgLTS  xRJzo9P6Aji+Yz2EuJnB8br3n8NA0VgYU8Fi3a8YQn80TsVD1XGwMADH45CuP1eGl87qDBKOInDj  ZqdUfy4oy9RU0LMeYmcI+Sfhy+NmuCQbiWqJRGXy2UzSWByMTsCVodTvZy84IOgu/5ZR8LrYPZJw  R2UcnnNytGAMXOLRc3bgr07i5TelRS+KIz6HxzDmMTh89N1SyvNTBCVXVmaU6Avu5gMUTu79bZRk  nl7OedSyps9AsUSoPocZXun4IRZZUw==  -----END CERTIFICATE-----  
weinxin

我的微信公众号
我的微信公众号扫一扫

广告也精彩

Shared via Inoreader

新版免费Alphassl泛域名证书申请