Mavericks rende i file sincronizzati alla condivisione SMB nascosta

0

Ho uno script eseguito da un LaunchAgent per sincronizzare una directory con una condivisione remota.

Questo script è abbastanza semplice, lo includerò qui in modo che nessuno sospetti la sceneggiatura.

#!/bin/bash
# Hjälpskript för att ta backup.
# Endast för Mac OS, kommandon som stat, date och nc har annat syntax
# på Linux.
# Av Stefan Midjich

# REDIGERA DEN HÄR SÖKVÄGEN
backupTarget='/Volumes/myuser'

# REDIGERA ENDAST HÄR UNDER OM DU VET VAD DU GÖR
destinationFormat="sync" # backar som standard till YYYY-MM kataloger, en för varje månad
rsyncPort=22 # som standard antar vi att rsync använder ssh på port 22
purge=0 # som standard rensas inget gammalt
purgeDate='-2m' # standard: idag minus 2 månader
hostPattern='^([^:]+):(\/?.*)' # matcha värdnamn och sökväg från backupTarget

# Avsluta direkt om mål-katalogen inte existerar
if [[ ! "$backupTarget" =~ $hostPattern && ! -d "$backupTarget" ]]; then
    echo "Backup target looks like directory that is not found" 1>&2
    exit 1;
elif [ -n "${BASH_REMATCH[1]}" ]; then
    # Här har vi hittat vad som ser ut att vara ett värdnamn i backupTarget.
    # Så vi ska kontrollera att värden går att kontakta.
    remoteHost=${BASH_REMATCH[1]}
    if ! nc -z -w 5 "$remoteHost" $rsyncPort >/dev/null 2>&1; then
            echo "Can't connect to target host on port $rsyncPort" 1>&2
            exit 1
    fi
fi

# Ta backup av samtliga argument som är
# existerande kataloger.
for syncDir in $@; do
    if [ -d "$syncDir" ]; then
            # Lägg till --delete efter -a om rsync även ska radera i
            # destinationskatalogen. Annars sparas allt gammalt som raderas i
            # källkatalogen.
            rsync --exclude 'Microsoft *' -aS "$syncDir" "${backupTarget}/$destinationFormat/"
    fi
done

# Rensa allt som är äldre än purgeDate endast
# om purge är högre än 0.
if (($purge >= 1)); then
    purgeTime=$(date -v"$purgeDate" '+%s')
    for targetDir in "${backupTarget}/*"; do
            lastModified=$(stat -f '%m' "$targetDir")
            if (($lastModified < $purgeTime)); then rm -rf "$targetDir"; fi
    done
fi

E viene avviato da questo LaunchAgent installato in ~/Library/LaunchAgents .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.myuser.syncDir</string>
    <key>ProgramArguments</key>
    <array>
            <string>/Users/myuser/bin/syncDir.sh</string>
            <string>/Users/myuser/Documents</string>
    </array>
    <key>WatchPaths</key>
    <array>
            <string>/Users/myuser/Documents</string>
            <string>/Volumes</string>
    </array>
</dict>
</plist>

Questo sistema ha funzionato da un po 'di tempo, ma da quando l'utente si è aggiornato a Mavericks ha avuto problemi con qualsiasi file sincronizzato con l'attributo nascosto impostato alla sincronizzazione.

Quindi il file è visibile in Finder quando viene modificato, ma una volta sincronizzato sulla condivisione riceve l'attributo nascosto sulla condivisione e non può più essere visto durante la navigazione nella condivisione in Finder.

Si può vedere solo usando la shell, anche ls -O mostra che ha l'attributo hidden.

Connessione alla stessa condivisione SMB2 utilizzando un PC Windows Posso vedere tutti i file, quindi questo attributo nascosto è solo in Mavericks. Posso anche rimuovere i file da un PC Windows, il che è ancora più strano.

I file che sono nascosti su Mavericks sono mostrati sul client Windows con un colore leggermente diverso, fino a quando non disattivo il flag nascosto su di essi e tornano alla normalità sia su client Windows che su Mavericks.

    
posta Stefan Midjich 21.01.2014 - 14:03
fonte

1 risposta

0

A quanto pare il problema è stato con il modo in cui è stata montata la condivisione, smb: // ha causato il problema nascosto mentre cifs: // nel percorso ha funzionato bene.

    
risposta data 22.01.2014 - 15:18
fonte

Leggi altre domande sui tag