6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager
    lord anubis

    rsync als synchronisatie tussen local and server met ipc code errror

    Hallo,

    Ik heb wat rsync scriptjes lopen.
    Werken goed, maar heb nu een script voor onder Lion client > server Lion wat fout gaat.

    dit is het resultaat

    <br />
    [client] parse_filter_file(/Volumes/Projects//_Rsync_project_excludes.txt,0,3)<br />
    [client] add_rule(- /Volumes/Projects/.com.bombich.ccc.*)<br />
    [client] add_rule(- /Volumes/Projects/.DocumentRevisions-*)<br />
    [client] add_rule(- /Volumes/Projects/.DS_Store)<br />
    [client] add_rule(- /Volumes/Projects/.fseventsd)<br />
    [client] add_rule(- /Volumes/Projects/.gitignore)<br />
    [client] add_rule(- /Volumes/Projects/.Spotlight-*)<br />
    [client] add_rule(- /Volumes/Projects/.TemporaryItems)<br />
    [client] add_rule(- /Volumes/Projects/.Trashes)<br />
    [client] add_rule(- /Volumes/Projects/Gebruikers-Icon)<br />
    [client] add_rule(- /Volumes/Projects/Icon)<br />
    [client] add_rule(- /Volumes/Projects/_Archived*)<br />
    [client] add_rule(- /Volumes/Projects/_Rsync*)<br />
    opening connection using --log-file=/Volumes/Projects//_Rsync_log.txt -l root 10.159.10.143 rsync --server --extended-attributes -vvvuntp "--log-format=%i" . /Volumes/RAID02/_Projects/Projects/<br />
    rsync: Failed to exec --log-file=/Volumes/Projects//_Rsync_log.txt: No such file or directory (2)<br />
    rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(86) [sender=2.6.9]<br />
    protocol version mismatch -- is your shell clean?<br />
    (see the rsync man page for an explanation)<br />
    rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/compat.c(61) [sender=2.6.9]<br />
    _exit_cleanup(code=2, file=/SourceCache/rsync/rsync-42/rsync/compat.c, line=61): about to call exit(14)<br />
     

    De log file is er wel degelijk.

    Laat ik de log file weg dan krijg ik

    opening connection using ssh -l root 10.159.10.143 rsync –server –extended-attributes -vvvuntp “–log-format=%i” . /Volumes/RAID02/_Projects/Projects/
    skipping directory /Volumes/Projects/.
    server_recv(2) starting pid=3143
    send_file_list done
    send_files starting
    received 0 names
    recv_file_list done
    get_local_name count=0 /Volumes/RAID02/_Projects/Projects/
    generator starting pid=3143 count=0
    delta-transmission enabled
    generate_files phase=1
    send_files phase=1
    recv_files(0) starting
    recv_files phase=1
    generate_files phase=2
    send_files phase=2
    send files finished
    total: matches=0 hash_hits=0 false_alarms=0 data=0
    recv_files phase=2
    recv_files finished
    generate_files phase=3
    generate_files finished

    en dit is het script.

    #!/bin/sh

    title=”##### – Sync_Local_ProjectsFolder_with_Server_ProjectsFolder “

    local_path=”/Volumes/Projects”
    remote_path=”/Volumes/RAID02/_Projects/Projects/”
    hostUser=”root@10.159.10.143″
    excludes=${local_path}”/_Rsync_tests_excludes.txt”
    log=${local_path}”/_Rsync_log.txt”

    echo ${title} started ‘date’ >> ${log}

    rsync -tuvvviE -n -p -e –log-file=${log} –exclude-from=${excludes} ssh ${local_path} ${hostUser}:${remote_path}

    echo ${title} ended ‘date’ >> ${log}

    exit 0

    De bedoeling is dus om de twee test folder synchroon te houden. De log file laat alleen start en stop regel zien. Is er een conflict met de flags?
    Wat is de bedoeling van is your shell clean?

    Heb wat extra vvv flags erbij gedaan waardoor wat meer info.

    Bijdrager
    iep

    Normaliter gebruik je geen { } voor variabelen in een shellscript (het wordt vaker gebruikt voor arrays e.d.). Die accolades kunnen wel weer heel wat anders betekenen wanneer je bash gebruikt. OS X gebruikt dan weliswaar standaard bash wanneer je bijv. Terminal start maar dat doet je script niet. Probeer eens of het script wel goed draait wanneer je deze begint met #!/bin/bash of haal die accolades weg en doe de variabelen op de standaard manier (dus in hoofdletters en zonder de accolades).

    Bijdrager
    lord anubis

    Hoi iep. bedankt voor je reactie.

    De accolades zijn er o.a voor om spaties te behouden.
    Zonder deze het zelfde resultaat. Heb je ideen uitgeprobeerd, zelfde resultaat.

    Wat ik nog steeds merk is dat de apple rsync versie nog steeds niet gelijk is aan de officiële versie. -A –acsl flag bv. Zal eens de andere erop zetten.

    Als ik alleen lokale folders gebruik dan werkt het wel.

    Bijdrager
    lord anubis

    Ik heb het sinds vanochtend werkend.

    Echter nog niet met launchd.

    Als ik deze regel uitvoer

    <br />
    rsync -rtpuv --stats --progress --log-file=${log_file} --exclude-from=${excludes} -e "ssh -l $user_name" ${local_path}/ $remote_host:${remote_path}<br />
     

    werkt het goed als ik het zelf opstart.

    wil ik het laten starten met een launchd agent als root dan krijg ik ( de agent wordt gestart en roept mijn script aan. ):

    012/08/30 17:35:30 [39981] rsync: connection unexpectedly closed (0 bytes received so far) [sender]
    2012/08/30 17:35:30 [39981] rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-42/rsync/io.c(452) [sender=2.6.9]

    Het lijkt erop dat mijn SSH niet samen werkt.

    Ik heb hier mijn Launchd plist. Beetje standaard maar kan best wat in zitten omdat ik nu voor het eerst ssh in mijn scriptgebruikt.

    <br />
    <?xml version="1.0" encoding="UTF-8"?><br />
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><br />
    <plist version="1.0"><br />
    <dict><br />
    	<key>KeepAlive</key><br />
    	<dict><br />
    		<key>PathState</key><br />
    		<string>/Volumes/Projects</string><br />
    	</dict><br />
    	<key>Label</key><br />
    	<string>net.mine.sync.projectsync.plist</string><br />
    	<key>Program</key><br />
    	<string>/Volumes/Projects/_Development/_ScriptsInDevelopment/Sync-LocProjectToServProject.sh</string><br />
    	<key>StartInterval</key><br />
    	<integer>600</integer><br />
    	<key>ThrottleInterval</key><br />
    	<integer>60</integer><br />
    </dict><br />
    </plist><br />
     

    Iemand wat suggesties? Of ziet waar ik de plank mis sla?

    Bijdrager
    arri

    Waarschijnlijk een launchd \’bootstrap context\’ of user-privileges issue.
    Je script heeft misschien geen rechten om een ssh connectie te beginnen?

    Bijdrager
    lord anubis

    Hoi Arri,

    Ik denk dat je gelijk heb. Weet jij hoe je dit opzet?
    Ik heb wat gegoogled en zie dat dit voor meerdere mensen een situatie is wat uitdraait naar een probleem.
    Er worden wat voor mij dat toch halve oplossingen geboden die niet werken. Had b.v dit gevonden

    <br />
    setenv SSH_AUTH_SOCK 'find /tmp/launch-*/Listeners -user [username] -type s | head -1'<br />
     

    maar werkt niet.
    ( ‘ is dus `. aan de moderators, wanneer maken jullie de code tag juist werkend?????? )

    Hoe kan ik dus een script, met rsync opdrachten, gestart met launchctl als root, ( /Lib/LaunchdDeamons ) werkend krijgen?
    Hoe krijg ik het voor elkaar dat SSH de root key/passphrase vind?
    Waar moet ik de key/Passphrase plaatsen?
    `

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.