我希望在 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) 目前,我正在使用以下手动过程将我的 PHP 网站从登台部署到生产:
整个过程非常复杂,大约需要 5-10 分钟,我每次对网站进行更改时都必须这样做,因此它变成了一件苦差事。
现在有没有办法使用一些脚本工具来自动化这个过程?或者是否有一个很好的部署工具,人们可以使用它来完成所有这些工作?我的临时和生产机器是基于 Ubuntu 12.04 服务器的,所以我可能可以使用 bash 脚本来完成一些工作。
我可以看到到目前为止可以进行的一些改进是:
我工作过的一家公司使用Fabric 命令行工具来自动化部署和做这种事情。但是,这是一个不错的选择还是有更好的工具?
出于某种原因,在运行单个 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/秒?
我试图让这个命令作为用户 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_rsa,id_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) 我想在不需要输入密码的情况下运行 rsync。我知道我可以使用 ssh 密钥来做到这一点,一旦正确的密钥被复制到远程服务器,rsync 就可以在没有用户交互的情况下正常登录。
但是,当密钥已更改、已删除,或者说在某些自动化的情况下,服务器已添加到要 rsync 的服务器列表中时,我希望 rsync 不会被提示输入密码。
意思是,rsync 应该只尝试通过 ssh 使用无密码登录,如果这不起作用,则继续前进,而不必处理密码提示和可能的长时间超时。
我正在寻找一种稳定的解决方案来使用rsync. 我必须将整个文件系统(超过 1Tb)同步到 Amazon S3。
我在哪里?
解决方案 1:我使用s3fs. 系统变得不稳定,交通真的很慢。这不是一个解决办法。
解决方案2:使用s3cmd sync命令。一切都以良好的速度进行(至少对于小于 2Gb 的文件夹)。当我尝试同步服务器上的所有文件系统(有一些例外)时,问题就出现了。该过程只是挂起。
任何提示?
我想在我的服务器上同步一个包含 Python 3 应用程序的目录。
该目录包含我感兴趣的文件:以 .py 结尾的文件
还有一些我想忽略的文件(这些是__pycache__目录中的文件)。(注意:__pycache__我的项目的任何子目录中都可能有目录)。我希望这些__pycache__目录被忽略,无论它们出现在哪里)。
我认为应该有一种简单的方法可以做到这一点,但找不到。--filter 选项似乎没有记录,并且 --exclude 选项不能像 rsync 帮助中描述的那样工作。
所以我试图使用该find命令来查找我系统中的所有文件mtime -x。它会这样做,但它不会“找到”文件的目录。
find . -mtime -2 -exec rsync -av {} /destination/ \;
我想如果可以的话,我是否可以将所有目录都带入它们中,所以我尝试过:
rsync -a -f"+ */" -f"- *" source/ destination/
这对于引入目录树很有用,但是当我尝试将文件拉入其中时,它们不会进入单独的目录,它们只是溢出到我将它们复制到的主目录中。
有什么想法可以让我获得find查找目录的命令或解决此问题的另一种方法吗?
我有 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) 我正在编写一个同步脚本来同步一些网络环境。
例如:从生产更新集成(主要是为了获取新的数据库行和上传的文件)
我的一些先决条件是:
我希望开发人员连接到集成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
但没有运气。