标签: mirror

如何在不删除符号链接的情况下复制目录结构?

我需要将一堆文件“安装”到另一个目录,保持源文件的目录结构完整。例如,如果我./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)

有没有更直接的方法来完成这种文件镜像而不清除中间符号链接目录(有或没有 …

rsync symlink mirror

31
推荐指数
3
解决办法
5万
查看次数

有没有办法镜像USB输出?

我目前正在为一个项目编写程序。

它用于盲文阅读系统,其中我有一个通过 USB 连接的盲文显示器,该显示器由名为 brltty 的程序控制。

该项目的要求之一是能够连接多个盲文显示器,尽管只让主显示器控制系统。

我认为最简单的方法是,不必向程序中的每个 brltty 实例发送命令,我可以将输出到主 USB 的内容镜像到每个 USB 端口。

这可能吗?

c usb tty mirror output

12
推荐指数
1
解决办法
501
查看次数

有没有办法禁用 wget 从父目录获取文件到给定深度?

wget具有-np禁止从任何父目录获取文件的选项。我需要一些类似但更灵活的东西。考虑:

www.foo.com/bar1/bar2/bar3/index.html
Run Code Online (Sandbox Code Playgroud)

我想得到一切,但不是“更高”(在树层次结构中)比bar2(!)。所以bar2也应该被 fetch 但不是bar1.

有没有办法让 wget 更有选择性?

背景:我正在尝试镜像一个具有类似逻辑结构的网站——起点,然后向上,然后向下。如果还有比wget更适合这种布局的工具,也请告诉我。

更新

或者不是指定可能的深度,可能是“没有父母,除非他们匹配这个或那个 URL”。

更新 2

服务器上有一些结构,对吧?你可以把它想象成一棵树。所以通常使用“--no-parent”,你从某个点 A 开始,然后只向下走。

我的愿望,是能够上升——通过说允许上升 X 个节点,或者(100% 等效)允许上升到 B 节点(距离 BA=X)。

在所有情况下,下降的规则保持由用户定义(例如 - 仅下降 Y 级)。

如何储存?实际上这不是问题——wget默认情况下重新创建服务器结构,这里没有什么可害怕的,或者不需要修复任何东西。所以,用两个词——像往常一样。

更新 3

下面的目录结构——让我们假设在每个目录中只有一个文件,在 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 开始。 …

wget mirror tree

11
推荐指数
1
解决办法
2万
查看次数

在 preseed.cfg 中禁用镜像选项

我正在使用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和选择。YesContinue without a network mirror?

设置d-i mirror/country string boolean false给出相同的对话。

此外,d-i mirror/confirm boolean true我认为还需要添加类似的内容,因为这是一个两步对话。

debian mirror preseed

8
推荐指数
1
解决办法
7063
查看次数

禁用 YUM 镜像列表检查

我有一台未连接到互联网的机器。我还想yum不时地执行一些命令。

YUM 确实喜欢每隔一段时间更新镜像列表,从而导致如下错误:

无法从 yum-dump.py检索镜像列表http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os错误是'!请检查您的 yum 配置。

是否有参数在yum.conf或其他地方使 yum 停止更新镜像列表?

yum mirror

8
推荐指数
2
解决办法
1万
查看次数

旧 Debian 的归档镜像

我需要在我的系统上安装旧的 Debian 5 才能运行一些测试。安装抱怨网络上的存档镜像错误。如何解决这个问题?这是否意味着没有人反映过时的发行版?

在此处输入图片说明

debian mirror

8
推荐指数
2
解决办法
6161
查看次数

wget -k 不会转换所有链接

我正在尝试将一个完整的网站镜像到另一个域。

我正在尝试使用

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)

为什么会发生这种情况?

wget mirror

6
推荐指数
1
解决办法
6205
查看次数

具有不同大小磁盘的 ZFS Raid-Z

我已经搜索过了,我想我明白了,但只是想验证一下我的概念是否正确。

我正在构建一台新 PC,并希望将旧 PC 设置为文件服务器。最终,我想要两个“驱动器”(卷?池?),都具有冗余。一个用于操作系统,其余用于媒体。

驱动器:

  • 5 x 1.0TB
  • 2 个 1.5TB
  • 1 个 2.0TB

我可以这样分区吗:

  • 1.0TB
  • 1.0TB
  • 1.0TB
  • 1.0TB
  • 1.0TB
  • 1.0TB + 0.5TB
  • 1.0TB + 0.5TB
  • 1.0TB + 0.5TB + 0.5TB

然后:

  1. 将所有 1.0TB 分区合并为一个具有 7.0TB 可用容量的 raid-z
  2. 将两个 0.5TB 分区合并为两个镜像,每个镜像可用 0.5TB
  3. 将 7.0TB 的 raid-z 与一个 0.5TB 的镜像池化为 7.5TB 可用
  4. 将剩余的 0.5TB 镜像用于操作系统

我的想法正确吗?有没有更好的方法来做到这一点?

我知道,假设这种方法是最佳的,我不会在单个 2.0TB 驱动器上使用两个 0.5TB 分区创建镜像。我需要为每个镜子使用一个,否则我会破坏镜子的目的:)

zfs mirror

5
推荐指数
1
解决办法
7735
查看次数

rsync 可以在不重新下载的情况下修复时间戳吗?

我已经镜像了 100 GiB 的文件。在我的镜像上,一些时间戳和文件权限可能是错误的。我想使用 rsync 来解决这个问题。

我下载的服务器有超过 100 GiB 的文件。我的镜像从每个源目录中镜像某些文件它不反映整个目录。

如何告诉 rsync 修复我的时间戳和文件权限,而无需重新下载 100 GiB?

有关信息,我现在正在尝试rsync -av --list-only HOST::MODULE >/tmp/list.txt. 一旦我获取了这些数据,如果你们没有人能告诉我更好的答案,我将编写一个脚本来根据数据来处理我的每个文件。

但是没有更简洁的方法来完成这项工作吗?

(有这个问题,但它似乎没有回答我需要的。)

rsync mirror

5
推荐指数
1
解决办法
2696
查看次数

有没有办法知道 /etc 中的哪些文件被修改了?

我想创建我现有 Debian 服务器的镜像。我在/etc中修改了很多文件,不想手工重做,也不想下载巨大的镜像。我想做的是

  1. 下载 /etc 中所有文件的列表
  2. 下载已安装的所有 .deb 包的列表

然后,在原始服务器上,

  1. 将所有 .deb 展开到 /tmp/etc1 并查看它们安装了哪些 /etc 文件
  2. ls /tmp/etc1 > /tmp/listOfOrigEtc
  3. ls /tmp/etc > /tmp/listOfEtc
  4. diff /tmp/listOfEtc /tmp/listOfOrigEtc > /tmp/listOfFilesToDownload
  5. 下载所有新的 etc 文件
  6. 使用 find,查看哪些 /etc/ 文件被修改并下载它们

有没有办法使用单个命令来做到这一点?

debian etc mirror package-management

5
推荐指数
1
解决办法
1056
查看次数

标签 统计

mirror ×10

debian ×3

rsync ×2

wget ×2

c ×1

etc ×1

output ×1

package-management ×1

preseed ×1

symlink ×1

tree ×1

tty ×1

usb ×1

yum ×1

zfs ×1