Timeshift
모든 스냅샷이 포함된 Devuan Linux 상자 내부의 작은 500Gb 드라이브에 파일을 백업하기 위해 현재 OpenWRT에서 실행되는 작은 1TB NAS 장치를 설정했습니다 BackInTime
.
NAS의 사양(800MHz APM82181/256MB RAM)은 ssh
양쪽 끝에 1000M에서 협상하는 GbE 포트가 있지만 최대 7.50MiB/s에서 작업이 완료될 때까지 기다리거나 사용을 피해야 합니다.
주로 암호화로 인해 거의 일정한 100% CPU 로드로 이 하드웨어를 능가하는 경우가 있으므로 ssh
실행 가능한 옵션이 아닙니다.
이 모든 작업은 외부에서 접근할 수 없는 로컬 네트워크 내에서 이루어지며, 사용자는 나뿐이므로 암호화 부족은 문제가 되지 않습니다.
이를 염두에 두고 NAS 측에서 데몬으로 사용하는 것 외에는 선택의 여지가 없습니다 rsync
. 그러면 처리량이 최소 3.5/4.0x 증가합니다 ssh
.
문제는 해결책을 찾을 수 없다는 오류가 발생한다는 것입니다.
:~$ rsync -av --progress /media/stuff/firefox.oldfile rsync://[email protected]:/stuff
sending incremental file list
firefox.oldfile
85,812,416 100% 28.23MB/s 0:00:02 (xfr#1, to-chk=0/1)
rsync: [receiver] mkstemp "/.firefox.oldfile.hiOlHH" (in stuff) failed: Permission denied (13)
sent 85,833,480 bytes received 142 bytes 24,523,892.00 bytes/sec
total size is 85,812,416 speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]
:~$
좋은 소식은 (분명히) 28.23MB/s를 얻을 수 있다는 것입니다. =^)
나는 이것이 대상 폴더
rsync
에 임시 파일을 쓸 수 없기 때문에 발생하는 권한 문제라고 읽었습니다 ./.firefox.oldfile.dMAADG
/mnt/sda3/stuff
로그 파일은 터미널 출력에 아무 것도 추가하지 않습니다.
root@OpenWrt:~# cat /var/log/rsyncd.log
[2726] connect from UNDETERMINED (192.168.1.2)
[2726] rsync allowed access on module stuff from UNDETERMINED (192.168.1.2)
[2726] rsync to stuff/ from UNDETERMINED (192.168.1.2)
[2726] receiving file list
[2726] rsync: [receiver] mkstemp "/.firefox.oldfile.dMAADG" (in stuff) failed: Permission denied (13)
root@OpenWrt:~#
rsyncd.conf
내 파일이 올바른 것 같습니다 .
:/etc$ cat /etc/rsyncd.conf
# /etc/rsyncd.conf
# minimal configuration for rsync daemon
# -----------------------
# begin global parameters
uid = %RSYNC_USER_NAME%
gid = *
use chroot = true
max connections = 1
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
read only = false
reverse lookup = no
exclude = lost+found
timeout = 180
hosts allow = 192.168.1.2 # use after everything is working properly
# port = # set other than default 873
# socket options =
# ignore nonreadable =
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# end global parameters
# ---------------------------
# begin module parameters
# shared folder for testing
[testdir]
path = /mnt/sda3
read only = false
# comment =
# shared folder for stuff
[stuff]
path = /mnt/sda3
read only = false
# comment =
# shared folder for bkups
[bkups]
path = /mnt/sda3
read only = false
# comment =
내가 아는 한, 대상 디렉터리의 소유권은 정확합니다.
:~$ ls -l /mnt/sda3
drwxrwxrwx 4 groucho groucho 4096 Apr 25 19:03 bkups
drwxrwxrwx 2 groucho groucho 4096 Apr 29 18:47 stuff
drwxrwxrwx 2 groucho groucho 4096 Apr 28 17:53 testdir
:~$ ls -l /mnt
나는 며칠 동안 이 문제로 인해 아무 소용이 없었습니다.
누구든지 나를 위해 이것에 대해 밝힐 수 있다면 매우 감사하겠습니다.
미리 감사드립니다.
G.
답변1
경로에 가장 낮은 수준이 없습니다. 예를 들어:
[stuff] path = /mnt/sda3 read only = false
이는 stuff
루트가 ,로 명명된 공유를 정의합니다 /mnt/sda3
. /mnt/sda3
귀하의 사용자는 그 자체에 쓸 수 없으며 rsyncd
귀하가 우리에게 제공한 디렉토리 목록에 따르면 그것은 귀하가 원하는 것이 아니라고 말하고 싶습니다 .
대신 실제로 전체 경로를 지정해야 합니다.
[stuff]
path = /mnt/sda3/stuff
read only = false
fake user = yes
데몬 사용자가 (아마도) 루트가 아니더라도 사용자, 그룹 및 권한 세부 정보를 캡처할 수 fake user
있도록 여기에 설정을 포함했습니다 .rsyncd
일반적으로 다음과 같은 옵션이 있으며 그 중 대부분은 전역 섹션에 배치할 수 있습니다.
[stuff]
comment = Backup space for stuff
path = /mnt/sda3/stuff
hosts allow = ...
auth users = *
secrets file = /etc/rsyncd.secrets
use chroot = yes
read only = no
list = yes
strict modes = yes
ignore errors = no
ignore nonreadable = no
fake super = yes
transfer logging = no
timeout = 600
refuse options = delete
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.vib *.vbk