Der rekursive Ordner "mkdir" ist vorhanden, der Benutzer hat jedoch keine Berechtigungen

364
TheKitMurkit

Ich versuche, Verzeichnisse durch ssh rekursiv zu erstellen.

Das Verzeichnis / home / user / staging ist vorhanden. Der Benutzer hat jedoch keine Berechtigung zum Lesen von / home . mkdir weiß nicht, ob / home / user existiert und versucht, es zu erstellen.

mkdir -p /home/user/staging/first/second/third/fourth/ mkdir: cannot create directory ‘/home/user’: Permission denied 

Wie überspringen Sie dieses Verzeichnis und erstellen Sie weiter, wo der Benutzer die Berechtigung hat?

Ich versuche es mit meinem eigenen Skript zu machen,

rec() { dir=$1 if [[ ! -e $dir ]]; then echo "creating $dir" newdir=$(echo $dir | sed 's:/[^/]*$::') rec $newdir mkdir $dir fi } 

Aus irgendeinem Grund schlägt diese Prüfung fehl, wenn [[! -e $ dir]] und loop geht an vorhandenen Verzeichnissen vorbei und erzeugt schließlich nichts.

0
was würde helfen: "id"; "ls -ld / home" A.B vor 6 Jahren 0
Wie wäre es mit CD in das Haus des Benutzers zu gehen und dann relative Verzeichnisse zu erstellen? Xen2050 vor 6 Jahren 0
Wenn "user" keine Ausführungsberechtigung für "/ home" hat, ist dies das erwartete Verhalten. Diese Antwort (https://unix.stackexchange.com/a/13891/285436) über Verzeichnisberechtigungen könnte Ihnen dabei helfen. danzel vor 6 Jahren 0

1 Antwort auf die Frage

0
TheKitMurkit

Ich habe es nicht geschafft, dieses Skript zum Laufen zu bringen.

Die Lösung ist jedoch die Verwendung der Option --relative von rsync.

rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/ 

Wie in dieser Antwort beschrieben: https://stackoverflow.com/a/22908437/6505678