我需要将一堆文件“安装”到另一个目录,保持源文件的目录结构完整。例如,如果我./foo/bar/baz.txt
要去,/var/www/localhost/webroot/
我希望结果是/var/www/localhost/webroot/foo/bar/baz.txt
. rsync
中具有此功能--relative
,但是当我这样做时,我发现它对符号链接不友好:
$ ls -ald /var/www/localhost/webroot/ | grep ^l
lrwxrwxrwx 1 www-data www-data 15 2014-01-03 13:45 media -> ../static/media
lrwxrwxrwx 1 root root 13 2014-02-24 13:47 var -> ../static/var
$ rsync -qrR . /var/www/localhost/webroot/
$ ls -ald /var/www/localhost/webroot/ | grep var
drwxr-xr-x 3 root root 4096 2014-02-24 13:52 /var/www/localhost/webroot/var
Run Code Online (Sandbox Code Playgroud)
所以你看到符号链接不再是符号链接——文件被复制到了错误的地方!
rsync
也有--no-implied-dirs
选项,从表面上看似乎可以做我想做的事,但它只能在不执行递归 rsync时按我的意图工作,所以我必须:
find . -type f -print0 | xargs -0I{} rsync -R --no-implied-dirs {} /var/www/localhost/webroot/
Run Code Online (Sandbox Code Playgroud)
有没有更直接的方法来完成这种文件镜像而不清除中间符号链接目录(有或没有 …
我目前正在为一个项目编写程序。
它用于盲文阅读系统,其中我有一个通过 USB 连接的盲文显示器,该显示器由名为 brltty 的程序控制。
该项目的要求之一是能够连接多个盲文显示器,尽管只让主显示器控制系统。
我认为最简单的方法是,不必向程序中的每个 brltty 实例发送命令,我可以将输出到主 USB 的内容镜像到每个 USB 端口。
这可能吗?
wget具有-np
禁止从任何父目录获取文件的选项。我需要一些类似但更灵活的东西。考虑:
www.foo.com/bar1/bar2/bar3/index.html
Run Code Online (Sandbox Code Playgroud)
我想得到一切,但不是“更高”(在树层次结构中)比bar2
(!)。所以bar2
也应该被 fetch 但不是bar1
.
有没有办法让 wget 更有选择性?
背景:我正在尝试镜像一个具有类似逻辑结构的网站——起点,然后向上,然后向下。如果还有比wget
更适合这种布局的工具,也请告诉我。
或者不是指定可能的深度,可能是“没有父母,除非他们匹配这个或那个 URL”。
服务器上有一些结构,对吧?你可以把它想象成一棵树。所以通常使用“--no-parent”,你从某个点 A 开始,然后只向下走。
我的愿望,是能够上升——通过说允许上升 X 个节点,或者(100% 等效)允许上升到 B 节点(距离 BA=X)。
在所有情况下,下降的规则保持由用户定义(例如 - 仅下降 Y 级)。
如何储存?实际上这不是问题——wget
默认情况下重新创建服务器结构,这里没有什么可害怕的,或者不需要修复任何东西。所以,用两个词——像往常一样。
下面的目录结构——让我们假设在每个目录中只有一个文件,在 R 中——R.html 等等。这当然是简化的,因为您可以拥有不止一页。
R
/ \
B G
/ \
C F
/ \
A D
/
E
Run Code Online (Sandbox Code Playgroud)
A (A.html) 是我的起点,X = 2(所以 B 是我想要获取的最顶级节点)。在此特定示例中,这意味着获取除 R.html 和 G.html 之外的所有页面。A.html 被称为“起点”,因为我必须从它开始,而不是从 B 开始。 …
我正在使用preseed.cfg
.
我正在尝试创建一个preseed.cfg
将跳过/不设置 Debian 镜像的Configure the package manager
步骤。我没有安装任何附加包 ( tasksel tasksel/first multiselect none
) 因此“一个非常小的基础系统”
如果我使用d-i mirror/country string manual
我得到
Please enter the hostname of the mirror from which Debian will be downloaded
Run Code Online (Sandbox Code Playgroud)
然后我必须在询问时手动选择Go back
和选择。Yes
Continue without a network mirror?
设置d-i mirror/country string boolean false
给出相同的对话。
此外,d-i mirror/confirm boolean true
我认为还需要添加类似的内容,因为这是一个两步对话。
我有一台未连接到互联网的机器。我还想yum
不时地执行一些命令。
YUM 确实喜欢每隔一段时间更新镜像列表,从而导致如下错误:
无法从 yum-dump.py检索镜像列表http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os错误是'!请检查您的 yum 配置。
是否有参数在yum.conf
或其他地方使 yum 停止更新镜像列表?
我正在尝试将一个完整的网站镜像到另一个域。
我正在尝试使用
wget -mk http://example.com
Run Code Online (Sandbox Code Playgroud)
但是 -k 选项会保留一些原始 URL,而其他 URL 会被转换,例如:
<link rel="stylesheet" href="http://example.com/templates/css/style.css" type="text/css" />
<!--[if lt IE 8]>
<link rel="stylesheet" href="/templates/css/ie.css" type="text/css" />
<![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" href="/templates/css/ie6.css" type="text/css" />
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
或 img 标签:
<img src="http://example.com/templates/img/logo.jpg"
Run Code Online (Sandbox Code Playgroud)
虽然 a-tags 被正确转换。
这些来自 index.html,以及 wget 状态的输出,即 index.html 被转换
Converting example.com/index.html... 30-12
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?
我已经搜索过了,我想我明白了,但只是想验证一下我的概念是否正确。
我正在构建一台新 PC,并希望将旧 PC 设置为文件服务器。最终,我想要两个“驱动器”(卷?池?),都具有冗余。一个用于操作系统,其余用于媒体。
驱动器:
我可以这样分区吗:
然后:
我的想法正确吗?有没有更好的方法来做到这一点?
我知道,假设这种方法是最佳的,我不会在单个 2.0TB 驱动器上使用两个 0.5TB 分区创建镜像。我需要为每个镜子使用一个,否则我会破坏镜子的目的:)
我已经镜像了 100 GiB 的文件。在我的镜像上,一些时间戳和文件权限可能是错误的。我想使用 rsync 来解决这个问题。
我下载的服务器有超过 100 GiB 的文件。我的镜像从每个源目录中镜像某些文件。它不反映整个目录。
如何告诉 rsync 修复我的时间戳和文件权限,而无需重新下载 100 GiB?
有关信息,我现在正在尝试rsync -av --list-only HOST::MODULE >/tmp/list.txt
. 一旦我获取了这些数据,如果你们没有人能告诉我更好的答案,我将编写一个脚本来根据数据来处理我的每个文件。
但是没有更简洁的方法来完成这项工作吗?
(有这个问题,但它似乎没有回答我需要的。)
我想创建我现有 Debian 服务器的镜像。我在/etc中修改了很多文件,不想手工重做,也不想下载巨大的镜像。我想做的是
然后,在原始服务器上,
ls /tmp/etc1 > /tmp/listOfOrigEtc
ls /tmp/etc > /tmp/listOfEtc
diff /tmp/listOfEtc /tmp/listOfOrigEtc > /tmp/listOfFilesToDownload
有没有办法使用单个命令来做到这一点?