标签: rsync

Rsync Throttle 上传带宽 --bwlimit=KBPS

我希望在 rsync 过程中限制文件传输的上传速度。

--bwlimit=KBPS是否意味着它设置了互联网传输速度,或硬盘驱动器磁盘写入速度?

--bwlimit=KBPS 限制 I/O 带宽;每秒千字节

此外,在手册中它说

Rsync 也可以作为守护进程运行,在这种情况下,接受以下选项:

这就是--bwlimit=KBPS的描述被列出的地方。

这是否意味着 rsync 必须在守护进程模式下运行才能使用该命令?

如果... --bwlimit=KBPS是指我的文件的互联网传输速度...

任何人都可以提供一个示例,说明我如何更改命令行以限制使用 rsync 的文件传输的上传速度?

这是我目前正在使用的:

rsync -avz -e 'ssh' someuser@server1.example.com:/var/www/* /var/www/
Run Code Online (Sandbox Code Playgroud)

bandwidth rsync centos centos5

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

如何自动化网站部署到生产,包括缩小 CSS/JS?

目前,我正在使用以下手动过程将我的 PHP 网站从登台部署到生产:

  • 使用在线 YUI 压缩工具缩小 CSS 和 JavaScript 文件。
  • 将原始 CSS 和 JavaScript 文件移动到另一个目录(以备份它们),然后用缩小的 CSS 和 JavaScript CSS 文件替换它们。
  • 开始将所有文件从我的临时服务器复制到我的 Windows PC。
  • 删除暂存 .htaccess 和索引文件,这样它们就不会被复制到生产服务器(这些文件具有暂存环境的特定内容)。
  • 打开 WinSCP 并转到生产服务器上的 Web 根目录,然后将主索引文件切换为“正在进行的更新”,这样如果任何访问者访问该站点,他们就会收到一条消息,说它暂时关闭。
  • 然后使用 WinSCP 从我的 PC 复制到生产 Web 服务器(这会覆盖服务器上的所有现有文件),大约需要 4 分钟才能看到有很多文件。
  • 使用 SSH 登录生产服务器并运行大约 5 个命令来为各种可写目录设置适当的权限,并确保所有内容仍在 www-root 组下。我认为使用 SSH 的上传过程会更改所有现有权限。
  • 将“正在进行的更新”索引文件切换回正常索引。

整个过程非常复杂,大约需要 5-10 分钟,我每次对网站进行更改时都必须这样做,因此它变成了一件苦差事。

现在有没有办法使用一些脚本工具来自动化这个过程?或者是否有一个很好的部署工具,人们可以使用它来完成所有这些工作?我的临时和生产机器是基于 Ubuntu 12.04 服务器的,所以我可能可以使用 bash 脚本来完成一些工作。

我可以看到到目前为止可以进行的一些改进是:

  • 向我的网站添加一些代码,以便它检测它是在 Staging 还是 Production 中,然后根据环境使用原始或缩小的 CSS/JavaScript 文件。这将节省我手动交换文件。
  • 使用命令行 YUI 压缩器并在需要时从脚本文件运行它。
  • 使用类似 rsync 的东西,这样它只会将更改的文件从我的登台服务器复制到生产服务器,而不是覆盖每个文件

我工作过的一家公司使用Fabric 命令行工具来自动化部署和做这种事情。但是,这是一个不错的选择还是有更好的工具?

linux ssh deployment rsync fabric

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

多线程 Rsync 传输

出于某种原因,在运行单个 rsync 命令时,即使我将 2 个服务器都连接到 1 Gbps 端口时,我的速度也会达到 1 MB/秒到 2 MB/秒。

rsync -v --progress -e ssh /backup/mysqldata/mysql-bin.000199 root@XXX.XXX.XXX.XXX:/secondary/mysqldata/mysqldata/mysql-bin.000199

我有超过 800 GB 的数据要在 500 个左右的文件中传输拆分,所有文件都以以下开头:

mysql-bin.000*

我发现从单独的 SSH 窗口同时运行 25-30 rsync 可以让我获得超过 25 MB/秒的速度,但是我需要花费几个小时来手动运行这些。

有没有办法从单个 rsync 命令中获得 25 MB/秒?

rsync

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

如何允许一台服务器上的用户“postgres”同步到另一台服务器?

我试图让这个命令作为用户 postgres 工作(所以我可以发送 wal 文件):

rsync -a /tmp/test postgres@server2:/tmp/test
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

我已经运行ssh-keygen eval `ssh-agent`,并ssh-add为server1上的Postgres用户。keygen 创建/var/lib/postgresql/.ssh/id_rsaid_rsa.pub我可以看到它是通过使用ssh -vvv postgres@server2.

在我创建的 server2 上,/var/lib/postgresql/.ssh/authorized_keys将 id_rsa.pub 表单 server1 的内容放入其中。它归 postgres 用户和组以及 chmod 600 所有。该.ssh目录也归 postgres 和 chmod 700 所有。

我可以从 server2 上的详细 sshd 登录中看到 Failed publickey for postgres...

两台服务器上的 postgres 用户: postgres:x:106:114:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

ssh -vvv postgres@server2

...
debug1: Found key in /var/lib/postgresql/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: …
Run Code Online (Sandbox Code Playgroud)

ssh rsync

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

如何防止 rsync(使用 ssh 作为远程 shell)面临密码提示

我想在不需要输入密码的情况下运行 rsync。我知道我可以使用 ssh 密钥来做到这一点,一旦正确的密钥被复制到远程服务器,rsync 就可以在没有用户交互的情况下正常登录。

但是,当密钥已更改、已删除,或者说在某些自动化的情况下,服务器已添加到要 rsync 的服务器列表中时,我希望 rsync 不会被提示输入密码。

意思是,rsync 应该只尝试通过 ssh 使用无密码登录,如果这不起作用,则继续前进,而不必处理密码提示和可能的长时间超时。

linux ssh rsync

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

Linux 服务器同步到 Amazon S3 存储桶

我正在寻找一种稳定的解决方案来使用rsync. 我必须将整个文件系统(超过 1Tb)同步到 Amazon S3。

我在哪里?

解决方案 1:我使用s3fs. 系统变得不稳定,交通真的很慢。这不是一个解决办法。

解决方案2:使用s3cmd sync命令。一切都以良好的速度进行(至少对于小于 2Gb 的文件夹)。当我尝试同步服务器上的所有文件系统(有一些例外)时,问题就出现了。该过程只是挂起。

任何提示?

rsync amazon-s3 s3fs s3cmd

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

Rsync 过滤并忽略一些目录

我想在我的服务器上同步一个包含 Python 3 应用程序的目录。

该目录包含我感兴趣的文件:以 .py 结尾的文件

还有一些我想忽略的文件(这些是__pycache__目录中的文件)。(注意:__pycache__我的项目的任何子目录中都可能有目录)。我希望这些__pycache__目录被忽略,无论它们出现在哪里)。

我认为应该有一种简单的方法可以做到这一点,但找不到。--filter 选项似乎没有记录,并且 --exclude 选项不能像 rsync 帮助中描述的那样工作。

rsync filter

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

如何操作 find 命令来“查找”“找到”文件所在的目录?

所以我试图使用该find命令来查找我系统中的所有文件mtime -x。它会这样做,但它不会“找到”文件的目录。

find . -mtime -2 -exec rsync -av {} /destination/ \;

我想如果可以的话,我是否可以将所有目录都带入它们中,所以我尝试过:

rsync -a -f"+ */" -f"- *" source/ destination/

这对于引入目录树很有用,但是当我尝试将文件拉入其中时,它们不会进入单独的目录,它们只是溢出到我将它们复制到的主目录中。

有什么想法可以让我获得find查找目录的命令或解决此问题的另一种方法吗?

files rsync find directory timestamp

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

Cygwin rsyncd 发送太多文件名

我有 rsyncd 作为 Windows 服务运行,但是当我尝试访问一个模块并从中同步时,我得到了我想要的文件,以及很多我没有的文件——因为它们不在远程模块中结尾。为了进行测试,我只在备份文件夹中放置了一个名为“the_only_file”的文件。从我的本地机器:

username@local:~$ rsync username@remote::backup .

receiving incremental file list
file has vanished: "/proc" (in backup)
file has vanished: "/cygdrive/c" (in backup)
file has vanished: "/cygdrive/d" (in backup)
skipping non-regular file "dev/clipboard"
skipping non-regular file "dev/conin"
skipping non-regular file "dev/conout"
skipping non-regular file "dev/console"
skipping non-regular file "dev/dsp"
skipping non-regular file "dev/full"
skipping non-regular file "dev/kmsg"
skipping non-regular file "dev/null"
skipping non-regular file "dev/ptmx"
skipping non-regular file "dev/pty0"
skipping non-regular file "dev/random"
skipping non-regular file "dev/scd0"
skipping …
Run Code Online (Sandbox Code Playgroud)

cygwin rsync

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

使用转发的密钥从远程 ssh 服务器进行 rsync

语境

我正在编写一个同步脚本来同步一些网络环境。

例如:从生产更新集成(主要是为了获取新的数据库行和上传的文件)

我的一些先决条件是:

  • 开发人员将从集成服务器使用此脚本
  • 需要 DSA 密钥才能连接到生产服务器
  • 集成服务器无法存储开发者的私钥

我希望开发人员连接到集成ssh -A以允许脚本使用他们的密钥连接到生产服务器:

+-------------+    SSH     +-------------+   rsync   +-------------+
| Developer   | ---------> | Integration | --------> |  Production |
|  computer   |            |   Platform  | <-------- |   platform  |
+-------------+            +-------------+           +-------------+
(priv DSA key)              (pub DSA key)             (pub DSA key)
Run Code Online (Sandbox Code Playgroud)

它适用于sshor scp,但我无法让 rsync 使用转发的密钥连接到生产服务器。

我看到了类似的问题,但是 rsync 是从用户的计算机运行的,因此 ssh 密钥文件可能会被-i选项指向。

我担心的不是密码短语,因为此脚本将由真实用户(不是 cron)运行

我试图像这样将远程 shell 指定为 rsync:

rsync -e "ssh -A" user@production

但没有运气。

ssh rsync ssh-agent

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