SSHFS s lokálnou kópiou

SSHFS s lokálnou kópiou
« kdy: 31. 10. 2012, 20:11:22 »
Ahojte

Potreboval by som sa z domu pripojiť na zdrojáky v práci. Momentálne to riešim cez netbeans. Je tam možnosť "PHP Application from Remote Server" a to mi čiastočne vyhovuje. Vie to po zmene súboru automaticky ho uploadnuť, ale nie je to úplne ideálne riešenie. Páčilo by sa mi riešenie v štýle SSHFS, akurát s lokálnou kópiou, aby som nemusel pri každom vyhľadávaní v súboroch ťahať po sieti pár desiatok alebo stoviek MB.
Zhrnutie: chcem mať u seba stiahnuté súbory a ak sa ktorýkoľvek súbor zmení, nech sa to prejaví na druhej strane prepojenia do pár sekúnd.

Máte niekto tip?
« Poslední změna: 31. 10. 2012, 20:32:38 od Petr Krčmář »


fsadf

Re:SSHFS s lokálnou kópiou
« Odpověď #1 kdy: 31. 10. 2012, 21:24:20 »
rsync po kazdem ulozeni

Re:SSHFS s lokálnou kópiou
« Odpověď #2 kdy: 31. 10. 2012, 22:37:30 »
Máte niekto tip?
Dúfam, že to nie je domáca úloha, tak som niečo napísal. Bude to potrebovať inotify-tools. Je to schválne obmedzené tak, aby ti to nezničilo dáta hneď po spustení - ak to bude na pohľad fungovať, tak obmedzenia zmaž.
Kód: [Vybrat]
#!/bin/sh

# Author:  branchman
# Licence: prayware ;-)
# Date:    2012/10/31

WATCH_DIRECTORY=/tmp/pom
WATCH_BASE=/tmp/
SSH_LOGIN_STRING=user@host
REMOTE_BASE=public_html/

# masks separated by semicolons (;)
FILE_IGNORE_MASKS=".swp$;.swpx$"

#-------edit next variables only if you know, what you are doing------------------
WATCH_BASE="`echo "${WATCH_BASE}" | sed -e 's/|/\\|/g'`"
GREP_COMMAND="`echo "${FILE_IGNORE_MASKS}" | sed -e 's/"/\\"/g' -e 's/^/grep -e "/' -e 's/$/"/' -e 's/;/" -e "/g'`"

inotifywait -m -r "${WATCH_DIRECTORY}" -e MODIFY,CREATE,DELETE --format "%e %w%f" 2>/dev/null |
while read ACTION FILE; do
    if echo "${FILE}" | eval ${GREP_COMMAND} >/dev/null 2>&1; then
        continue
    fi
    LOCAL_BASE="`echo "${FILE}" | sed -e "s|^${WATCH_BASE}||"`"
    REMOTE_FILE="${REMOTE_BASE}${LOCAL_BASE}"
    REMOTE_FILE_ESCAPED="`echo "${REMOTE_FILE}" | sed -e 's|"|\\"|g'`"
    case "${ACTION}" in
        *DELETE*)
            # delete echo here
            echo ssh "${SSH_LOGIN_STRING}" rm \"${REMOTE_FILE_ESCAPED}\"
            ;;
        *MODIFY*|*CREATE*)
            # delete echo here
            echo scp "${FILE}" "${SSH_LOGIN_STRING}:${REMOTE_FILE}"
            ;;
    esac
done