(Od: /programming/15245144/copy-file-permissions-but-not-files , zamknięte, ponieważ nie na temat)
Mam dwie kopie tego samego drzewa katalogów. W obu mają prawie te same pliki (jedna wersja może zawierać kilka dodatkowych lub brakujących plików). Jednak większość plików jest wspólna dla obu katalogów (mają te same ścieżki względne i wszystko).
Załóżmy, że znajdują się one w katalogach:
version1/
version2/
Problem polega na tym, że uprawnienia w wersji 1 / zostały pomieszane i chciałbym skopiować uprawnienia z wersji 2 /, ale rób to bez zastępowania plików w wersji 1 /, które są nowsze.
Czy istnieje zautomatyzowany sposób na wykonanie tego za pomocą poleceń powłoki lub skryptów?
unix
file-permissions
unix-shell
copying
Mariano Paniga
źródło
źródło
Odpowiedzi:
GNU cp zna
--attributes-only
flagę od coreutils 8.6źródło
Moja wersja
cp
nie ma--attributes-only
flagi, więc to poprawiłem. Krótko przetestowany na prostych folderach, YMMV.źródło
Możesz, ale nie sądzę w „zautomatyzowany sposób”!
GNU chown i GNU chmod mają
--reference=RFILE
parametr, którego możesz użyć.Wykorzystuje
RFILE
ustawienia (uprawnienia, właściciela, grupę itp.) I kopiuje je doyourfile
.instrukcja wyjaśnia bardziej szczegółowo.
źródło
W moim przypadku rozwiązałem to za pomocą polecenia „stat” z „find” i „vi”, aby utworzyć skrypt, który stosuje uprawnienia.
Do „vi” wstawiłem do wszystkich wierszy polecenie „chmod”:
%s/^/chmod /g
skopiowałem skrypt doversion2/
katalogu i wykonałem go.Inne rozwiązania wydają się aktualne, ale nie testowałem ich na wszelki wypadek.
źródło
Zainspirowany odpowiedzią Mariano Panigi, myślę, że mam lepszą, która nie musi vi i wyszukiwać / zamieniać poleceń. Chcę nawet skopiować informacje o własności (uid / gid).
Możesz dostosować zawarte w nim polecenia
stat -c '...'
w dowolny sposób. Wszystkie dostępne opcje patrzman stat
.źródło