파일을 동기화할 수 없습니다.

파일을 동기화할 수 없습니다.

두 서버(server1 및 server2) 간에 파일을 동기화하려고 합니다. 사용자를 생성하고 해당 사용자에게 /var/www의 RWX에 대한 권한을 부여한 후 다음과 같은 일관된 프로필을 추가했습니다.

root=//var/www/html/
root=ssh://user@server2//var/www/html/environments/simreg/


log = true

ignore=Path cache
ignore=Path vendor
ignore=Path logs

auto=true
batch=true
repeat=watch
#confirmbigdel=true
confirmbigdel=false
fastcheck=true
prefer=newer
silent=false
times=true
owner=true
server = true
confirmmerge = true

backupdir = /var/www/html/environments/backup
ui = text

하지만 일관성을 유지하려고 하면 백업이 생성되지 않습니다. 디버깅이 작동하지 않았고, 내가 뭘 잘못하고 있는지 깨닫지 못했습니다.

user@server2:~$ unison -debug all
[startup] Preferences:
ui = text
host = 
server = true
prefsdocs = false
doc = 
version = false
silent = false
dumbtty = false
testserver = false
showprev = false
selftest = false
confirmmerge = true
retry = 0
repeat = watch
contactquietly = false
key = 
label = 
expert = false
height = 15
auto = true
maxthreads = 0
prefer = newer
force = 
sortnewfirst = false
sortbysize = false
keeptempfilesaftermerge = false
diff = diff -u CURRENT2 CURRENT1
backupdir = /var/www/html/environments/backup
maxbackups = 2
backups = false
backupsuffix = 
backupprefix = .bak.$VERSION.
backuploc = central
copymax = 1
copyquoterem = default
copythreshold = -1
copyprogrest = rsync --partial --append-verify --compress
copyprog = rsync --partial --inplace --compress
rsync = true
fastcheck = true
ignorelocks = false
dumparchives = false
ignorearchives = false
showarchive = false
rootsName = 
fat = false
allHostsAreRunningWindows = false
someHostIsRunningWindows = false
ignore = Path logs
ignore = Path vendor
ignore = Path cache
confirmbigdel = false
batch = true
root = ssh://user@server2//var/www/html/
root = //var/www/html/
killserver = false
halfduplex = false
stream = true
addversionno = false
servercmd = 
sshargs = 
rshargs = 
rshcmd = rsh
sshcmd = ssh
xferbycopying = true
sshversion = 
ignoreinodenumbers = false
links-aux = true
links = default
times = true
group = false
owner = true
numericids = false
dontchmod = false
perms = 1023
rsrc-aux = false
rsrc = default
maxerrors = 1
unicodeCS = false
unicodeEnc = false
unicode = default
someHostIsInsensitive = false
ignorecase = default
timers = false
terse = false
logfile = /var/www/html/.unison/unison.log
log = true
debugtimes = false
debug = all
addprefsto = 
Contacting server...
[remote] Shell connection: ssh (ssh, -l, dev_user, server2, -e, none, unison, -server)
user@server2's password: 
[globals] Checking path '' for expansions
Connected [//serve1//var/www/html/ -> //server2//var/www/html/]
[startup] Roots: 
        //var/www/html/
        ssh://user@server2//var/www/html/
  i.e. 
        //var/www/html/
        ssh://user@server2//var/www/html/
  i.e. (in canonical order)
       /var/www/html/
       //server1//var/www/html/

[props] Setting permission mask to 1777 (1777 and 7777)
[stasher] initBackupsLocal
[stasher] d = /
[stasher] Prefix and suffix regexps for backup filenames have been updated
[server: stasher] initBackupsLocal
[server: stasher] d = /
[server: stasher] Prefix and suffix regexps for backup filenames have been updated
[ui] Nothing changed: sleeping for 10 seconds...
[ui] Nothing changed: sleeping for 10 seconds...
[ui] Nothing changed: sleeping for 10 seconds...
[ui] Nothing changed: sleeping for 10 seconds...
[ui] Nothing changed: sleeping for 10 seconds...
[ui] Nothing changed: sleeping for 10 seconds...
[ui] Nothing changed: sleeping for 10 seconds...

위는 디버그 인쇄입니다. 하지만 파일은 두 서버 모두에 있습니다.

답변1

루트가 잘못 지정된 것 같습니다. 로컬 경로의 앞에 있는 이중 슬래시는 //var/www/html원격 서버에 대한 참조를 의미하는데 var, 이는 귀하가 의도한 바가 아닐 것으로 확신합니다. 다음을 시도해보세요:

root=/var/www/html
root=ssh://user@server2/var/www/html/environments/simreg

귀하의 의견에 따르면, «아티팩트는 Server1에 배포된 다음 이를 Server2에 복사해야 합니다.» 나는 이것이 unison업무에 잘못된 도구라고 생각합니다. 대신 rsync단방향 복사본을 제공하는 사용을 고려해보세요.

rsync -av --progress /var/www/html/ user@server2:/var/www/html/environments/simreg/

실제로 파일을 복사하지 않고 테스트하려면 를 포함하세요 --dry-run. cron일괄 작업(스크립트 등)에서 실행하는 경우 --progress플래그를 제거하세요.

관련 정보