Kopiuję pliki ze źródła do lokalizacji. Źródło nie jest własnością mnie, a zgoda na pliki u źródła to ---- rwx ---. Zezwolenie na pliki skopiowane do katalogu docelowego, który jest własnością mnie, to ---- r-x ---. Zezwolenie na katalog docelowy to drwxrwsrwx. Jak mam pliki z tą samą zgodą katalogu docelowego. Próbowałem "cp --no-preserve = all", ale to nie działało (wciąż takie same uprawnienia).Kopiowanie plików i nadawanie im uprawnień do katalogu docelowego
Odpowiedz
Spróbuj tego:
cp --no-preserve=mode,ownership $backupfile $destination
Pozwól mi Parafrazując do „Jak zachować uprawnienia katalogu docelowego na kopię?”
Nie mogę wziąć kredytu za odpowiedź, ponieważ połączyłem kilka odpowiedzi, które znalazłem na wolności. Więc nadchodzi.
Uprawnienia nie są powszechnie propagowane przez katalog, że pliki są kopiowane do raczej nowe uprawnienia są kontrolowane przez umask użytkownika. Jednak podczas kopiowania pliku z jednej lokalizacji do innej jest to pewien szczególny przypadek, w którym umask użytkownika jest w zasadzie ignorowany, a istniejące uprawnienia do pliku są zachowywane.
co wyjaśnia, dlaczego nie można bezpośrednio propagować uprawnienia do src do dst katalogu.
Istnieje jednak dwuetapowy sposób obejścia tego problemu.
- cp-metadata: Kopiuj atrybuty i tylko atrybuty chcesz zachować z powrotem do katalogu źródłowego. Oto krótki skrypt, który może to zrobić:
#!/bin/bash
# Filename: cp-metadata
myecho=echo
src_path="$1"
dst_path="$2"
find "$src_path" |
while read src_file; do
dst_file="$dst_path${src_file#$src_path}"
$myecho chmod --reference="$src_file" "$dst_file"
$myecho chown --reference="$src_file" "$dst_file"
$myecho touch --reference="$src_file" "$dst_file"
done
można opuścić komendę touch
jeśli nie chcesz zachować znacznik czasu. Wymień myecho=echo
na myecho=
, aby wykonać polecenia.
pamiętać, że ten skrypt powinien być uruchamiany w trybie sudo
aby móc uruchomić chown
i chmod
skutecznie
cp --preserve
: Po pomyślnym uruchomieniu pierwszego polecenia teraz czas skopiować zawartość wraz z atrybutami do katalogu dst .--preserve [= ATTR_LIST]
zachować określone atrybuty (domyślnie: tryb, własności, znaczniki czasu), czy ewentualnych dodatkowych atrybutów: kontekst, linki, xattr, wszystko\cp -rfp $src_dir $dst_dir
powinien zrobić czego chcesz.