标签: rsync

有一个非特权的非帐户用户 ssh 到另一个盒子吗?

我知道如何让用户使用密钥 ssh 进入另一个盒子:

ssh -l targetuser -i path/to/key targethost
Run Code Online (Sandbox Code Playgroud)

但是非帐户用户喜欢什么呢apache?由于该用户没有可以写入.ssh目录的主目录,因此整个事情一直失败:

$ sudo -u apache ssh -o StrictHostKeyChecking=no -l targetuser -i path/to/key targethost
Could not create directory '/var/www/.ssh'.
Warning: Permanently added '<hostname>' (RSA) to the list of known hosts.
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

我尝试过使用-o UserKnownHostsFile=/dev/null和设置$HOMEto 的变体/dev/null,但这些都没有达到目的。我知道这sudo可能会为我解决这个问题,但我试图避免需要手动服务器配置,因为此代码将部署在许多不同的环境上。

有任何想法吗?

以下是我尝试过但不起作用的一些示例:

$ sudo -u apache export HOME=path/to/apache/writable/dir/ ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=path/to/apache/writable/dir/.ssh/known_hosts -l deploy -i path/to/key targethost
$ sudo -u apache ssh -o …
Run Code Online (Sandbox Code Playgroud)

linux ssh rsync

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

rsync 的替代品?

我正在尝试为多个服务器(一些 Windows,一些 Linux)编写备份系统脚本。我希望能够使用 rsync,但我不能(至少不是在所有情况下,因为有些服务器我无法安装 rsync,有些是 Win 服务器)。

更麻烦的是,有些服务器我可以通过 SSH 访问,而有些服务器我只能通过 FTP 访问。

我已经在 FTP 模式下使用 wget 和“时间戳”选项进行了测试,无论平台如何,它似乎都能很好地工作。我也在研究 rdiff-backup,尽管似乎需要 SSH。

是否有其他选项可能更强大/可靠,无论平台如何,都可以进行增量备份,并且可以在 SSH 或 FTP 上运行?

感谢您的任何想法

backup rsync

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

如何通过 SOCKS5 代理使用 MacPorts (rsync)?

MacPorts 依靠 rsync 来完成其工作,而我依靠 SOCKS5 代理来完全访问互联网。如何让 rsync 通过我的代理运行其所有查询?

proxy rsync mac-osx socks

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

rsync 不同步文件

我遇到了一个奇怪的问题。我通常用来rsync在服务器之间同步文件,但现在这个实用程序的行为方式很奇怪。

首先,这是我使用的命令:

server1# rsync -av -e ssh ./server1_dir/ root@192.168.1.1:/server2_dir/
Run Code Online (Sandbox Code Playgroud)

它按应有的方式启动同步过程,但没有同步任何文件,仅同步目录。实际上并非所有目录,因为rsync进程挂起很长时间导致超时错误。

如果我终止该进程并再次尝试,它根本不会启动。我看到的唯一消息:

sending incremental file list
Run Code Online (Sandbox Code Playgroud)

第一个想法是——防火墙。但两台服务器都没有安装它。我什至尝试过手动编译最新rsync版本,但没有成功。

有人可以帮我解决这个问题吗?非常感谢。

更新。server1 上的 strace 输出

root@server1 [~]# ps auxf|grep [r]sync
root     13958  0.0  0.0  70676  1232 pts/0    S+   23:29   0:00  |       \_ rsync -avv -e ssh directory1 root@192.168.1.1:/home
root     13959  0.0  0.2  58436  3256 pts/0    S+   23:29   0:00  |           \_ ssh -l root 192.168.1.1 rsync --server -vvlogDtpre.isf . /root

root@server1 [~]# strace -p 13959
Process 13959 attached …
Run Code Online (Sandbox Code Playgroud)

rsync

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

通过 SSH 备份期间 Rsync 进程突然终止

我有一个 rsync 备份脚本来在两个 Ubuntu 服务器(位于不同国家)之间传输数据。就文件数量而言,正在备份的数据相当大。总共大小约为17GB。该脚本在接收服务器上运行。所以,它基本上是一个拉力。用于登录的公私密钥身份验证。

该脚本运行良好;备份已经成功进行了好几个月了。

最近已经过去6天左右了,备份一直没有完成。rsync 进程运行大约 45 分钟左右。然后就结束了。我不知道为什么它停止了。据我所见,它甚至没有完成构建和扫描文件列表。我将 cron 输出定向到日志文件。在日志中,我看到的只是:receiving file list ... done。但我可以看到没有任何内容被传输到备份目的地。

如果我手动运行脚本,大约 45 分钟后,我只会看到以下内容:./sync.sh: line 51: 9078 Killed $RSYNC $OPTIONS $SOURCE $DESTINATION

我如何以及在哪里可以看到失败的原因?我如何知道哪个服务器实际上正在终止进程,发送者还是接收者?

(脚本运行的地方)是一个低端机器。它是一个具有 256MB RAM 的 KVM 虚拟机。所以,我想知道文件结构的构建是否占用了太多 RAM,从而导致 OOM 错误。但我如何检查是否是这种情况呢?而且,文件并没有显着增加,导致突然失败。

任何提示将不胜感激。

谢谢。

更新1

按照 @APZ 的建议,我添加了几个更详细的标志(总共 3 个)并手动运行脚本,将输出重定向到文件。这是最后的输出:

(.... lots of file names....)
received 5795917 names
done
recv_file_list done
get_local_name count=5795917 /storage/  <======== Reached here after about 40 minutes. Was stuck here …
Run Code Online (Sandbox Code Playgroud)

ubuntu ssh rsync

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

rsync 不删除目标中的文件夹

我知道这里有一些相同主题的问题,但没有答案对我有帮助。

首先,这是我的脚本。它应该将所有文件从源复制到目标(保留所有权限等)。如果文件或目录在源中被删除,它也应该在目标中被删除。哪个工作不正常。

#!/bin/bash
## Basic RSync Command
RCMD="rsync -rulpEXogtzh --stats --delete --force"
DDIR="/tank/bak/s1/archive/"
SDIR="/tank/bak/s1/backup/"
CDAY=`date '+%u'`

echo "Archive Number: ${CDAY}"
echo "Archiving current backup"
$RCMD $SDIR $DDIR/$CDAY
Run Code Online (Sandbox Code Playgroud)

如果我在源中有以下目录:

/etc
/home
/root
/usr
Run Code Online (Sandbox Code Playgroud)

并同步它们我在目标中有以下目录:

/etc
/home
/root
/usr
Run Code Online (Sandbox Code Playgroud)

所以这很好用。现在,当我从源中删除 /usr 时,我的源如下所示:

/etc
/home
/root
Run Code Online (Sandbox Code Playgroud)

但是当我再次运行脚本时,我的目标仍然是这样的:

/etc
/home
/root
/usr
Run Code Online (Sandbox Code Playgroud)

所以不知何故 rsync 忽略了 --delete

rsync 输出:

Number of files: 1983645
Number of files transferred: 0
Total file size: 17.69G bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: …
Run Code Online (Sandbox Code Playgroud)

bash rsync

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

大量文件的完整或增量备份

我在数量和总文件大小方面都有大量文件。(我们说的是几 TB)。我想将这些文件/文件夹同步到外部备份系统一次,然后运行每日任务,该任务将根据每日更改重新同步备份。更改并不那么频繁,但有时我们可能会有大约 300GB 的差异(大约 1.5K 文件)。

我一直在考虑将 rsync 或 rdiff-backup 或 rsnapshot 作为一些工具,但我想先用 rsynch 运行一些测试。我遇到了 rsync 的一个主要问题,那就是:

检查现有文件的更改花费的时间太长。我们正在谈论超过 20 小时,这使得每日备份毫无意义。这是使用 rsync -rvhzP 或 -rvhP。即使没有添加/更改/删除文件,它似乎只是扫描所有文件并且需要几个小时。

难道我做错了什么?我提到的任何其他系统(rdiff-backup 或 rsnapshot)的性能会更好吗?我一直假设它们是基于 rsync 的。

提前致谢。

更新额外信息: 我们有大约 2600 个目录和 100k 个文件,总共大约 3.5TB,使用rsync version 3.0.9 protocol version 30. 就每日更改而言,通常每天有 10 个文件更改,但它可以在大约 1.5K 文件更改/添加/删除和大约 300Gb 的容量达到峰值(尽管这些峰值并不那么频繁,并且通常会分散)

backup rsync rdiff-backup rsnapshot

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

GlusterFS 快照备份解决方案

我们正在寻找一种快速的方法来拍摄我们的 gluster 砖的时间点快照。

  • 它是一个完美的时间点快照并不重要(即,如果文件在备份期间更改/添加/删除,备份可以有/没有这些更改)。

  • 理想情况下,它可以作为实时(无停机)备份运行,但我们可以处理从集群中删除一个节点,然后在需要时重新添加它。

  • 备份需要传输到远程位置,但如果需要,可以在本地进行初始备份后完成此操作。

  • 我们有多个砖块。所有这些都需要备份,可以单独或一次性完成。

  • glusterfs 3.5.3在撰写本文时,我们目前正在运行,但在发布新版本时确实会升级。

我们已经考虑过使用 rsync(就像我们在普通卷上所做的那样)但是它在 gluster 上真的很慢,因为我们有成千上万的非常小的文件(100kb - 3mb),我的理解是 gluster 与每个节点的所有节点对话文件以确保它提供正确的版本。我们可以在服务器节点之一(而不是通过 glusterfs 客户端)上的数据目录位置进行 rsync 同步吗?这是否会按预期工作并且速度更快,因为它不需要检查所有节点的内容?

Gluster Volume Snapshot听起来像是完美的解决方案,但我认为它还没有发布。

gluster 存储节点有 LVM,但我不太熟悉它的来龙去脉。这可能是一个解决方案吗?

有没有其他人对如何处理这种情况有好的建议?还是真实的生活经历?谢谢你。

backup rsync glusterfs

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

rsync - 无法解释的错误

我正在使用这样的脚本:

rsync -avu --delete --progress user@host:~/backup .
Run Code Online (Sandbox Code Playgroud)

每次过一段时间后,都会收到此错误:

rsync: connection unexpectedly closed (10251754 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.0]
rsync: connection unexpectedly closed (45482 bytes received so far)  [generator]
rsync error: unexplained error (code 255) at io.c(226) [generator=3.1.0]

# generator = Debian 5, rsync  version 3.0.3  protocol version 30 (Generator[A])
# receiver = Ubuntu 14.04, rsync  version 3.1.0  protocol version 31 (Receiver[A])
Run Code Online (Sandbox Code Playgroud)

我有十多年的经验rsync,我尝试了所有方法,但我无法弄清楚为什么会发生这种情况。

双方:我在日志中没有错误,在 …

networking ssh rsync

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

Bash:使用变量来动态调整 rsync 的时间安排并在运行时放慢速度?

在命令已经启动后bash 脚本期间运行动态流量整形有哪些解决方案?这甚至可能吗?

我的用例是,我rsync在大量磁盘上运行到远程备份位置,这在 Internet 上需要很多小时,所以我想将流量整形应用于rsync调用的线路,但仅限于指定时间。

因此,例如,当前的计划是在上午 5 点到上午 10 点和下午 3 点到晚上 9 点将上传减少到每秒 1000 KB (1.0MB/s)。

我已经看过了--bwlimit=1000rsync但这会rsync在它运行的整个时间里形成而不仅仅是所需的塑造时间框架

rsync启动后可以减速吗?因为如果以某种方式可能,那将是我的解决方案。

我见过有人建议,wondershaper但我想知道这是否可以以编程方式“打开和关闭”?如果是,如何做到这一点?

这是一个模型,我使用 Stackoverflow 的慷慨贡献对它进行了黑客攻击,它提供了指定和检查时间表的功能(基于小时,这对我目前的需求来说很好)......

#!/bin/bash

declare -A shapingTimes
declare -A keycount

useTrafficShaping=1

# schedule
shapingTimes=([0-from]=5 [0-to]=10)  # 5am to 10am
shapingTimes+=([1-from]=15 [1-to]=21)  # 3pm to 9pm

# because keys and array content differs in order from the way they are defined, …
Run Code Online (Sandbox Code Playgroud)

networking backup bash rsync traffic-shaping

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