2010-05-27 21:51:36 +0000 2010-05-27 21:51:36 +0000
43
43
Advertisement

Jak zachować atrybuty pliku podczas kopiowania plików w systemie Windows?

Advertisement

Na Linuksie możemy po prostu zrobić:

cp -pr directory

Jak to zrobić w Windows? Czy można to zrobić w Eksploratorze Windows? Jakieś propozycje narzędzi GUI?

Byłoby najlepiej, gdybym mógł zachować uprawnienia NTFS i czas tworzenia / modyfikacji / dostępu. Co najmniej, muszę zachować datę modyfikacji dla plików i katalogów. Kopia Eksploratora Windows nie zachowuje daty modyfikacji dla katalogów.

Advertisement
Advertisement

Odpowiedzi (14)

23
23
23
2010-06-01 20:25:56 +0000

RoboCopy może zachować mtime dla katalogów za pomocą przełącznika /DCOPY:T, ale działa to tylko w Vista i nowszych wersjach. Może również zachować listy ACL. Alternatywnie, FastCopy może być skonfigurowane do zachowania czasów katalogów, ACLs i ADSes .

21
21
21
2012-03-05 14:33:18 +0000

… lub możesz po prostu zrobić archiwum zip (z metodą kompresji ustawioną na “Store”), a następnie rozpakować pliki tam, gdzie chciałeś je skopiować. Atrybuty daty/czasu są takie same jak w oryginalnych plikach.

10
Advertisement
10
10
2018-05-26 19:48:07 +0000
Advertisement

Robocopy narzędzie wiersza poleceń (pochodzi z większości wersji systemu Windows) Na moim komputerze windows 10 znajduje się pod adresem C:\Windows\System32

Z Wikipedia , może być używany z następującym zestawem opcji do zachowania znaczników czasu plików i katalogów, jak również innych atrybutów:

Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0 - /DCOPY:T zachowaj oryginalne znaki czasowe katalogów (wymaga wersji XP026 lub nowszej) - /E: Kopiuj rekurencyjnie katalogi, w tym puste katalogi - /R:0: nie próbuj ponownie zablokowanych plików (liczba prób przy nieudanych kopiach domyślnie wynosi 1 milion),

  • /COPYALL: kopiuj wszystkie informacje o pliku, (odpowiednik /COPY:DATSOU, gdzie

Jeśli tylko chcesz zachować znaczniki czasowe daty i katalogu, ale nie chcesz, aby puste podkatalogi były kopiowane i nie chcesz, aby inne atrybuty były zachowane, to możesz użyć:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

gdzie /S kopiuje niepuste podkatalogi

Aby zobaczyć pełną składnię, wpisz robocopy /? w wierszu poleceń, lub spójrz na te posty na blogu: https://ss64.com/nt/robocopy.html an https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

Przykład polecenia, które ostatnio wykonałem:
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR Zauważ, jak wykluczenie 2 podkatalogów wymaga dwukrotnego użycia flagi /XD. Ponadto, drugie wykluczenie katalogu używa cudzysłowów, ponieważ w nazwie katalogu są spacje.

Na koniec, możesz dodać flagę /L, aby przetestować polecenie przed wykonaniem go naprawdę. W ten sposób możesz sprawdzić, czy polecenie nie skopiuje (lub nie usunie) żadnych katalogów/plików, których nie chcesz, i czy nie ma błędów w poleceniu.

Edit: gotcha podczas kopiowania z katalogu głównego (aka drive) do folderu (non-root directory)

Po uruchomieniu przykładowej komendy powyżej, katalog nie był widoczny! (Nawet jeśli show hidden files i show system files były zaznaczone w Windows 10!) Następujące polecenie jak na https://serverfault.com/a/455029/399723 naprawiło to:

attrib -h -s C:\D_backup

Alternatywnie, dodanie /A-:SH “unsets the Hidden Attribute from System files”, a więc może zapobiec ukryciu katalogu w pierwszej kolejności, jak na https://serverfault.com/a/565804/399723 . Zobacz także https://ss64.com/nt/robocopy.html .
To omówienie rzuca więcej światła na tę opcję jako rozwiązanie.

Robocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Inne oprogramowanie:

Alternatywnie, możesz pobrać GUI wersję robocopy jeśli nie chcesz używać wiersza poleceń.

Innym narzędziem windowsowym jest XCopy , chociaż jest dołączony do windows 10, jest on obecnie wycofywany. Zobacz link dla gotchas.

Strona Wikipedii dla RoboCopy (link na górze tego postu) zawiera listę innych programów, które mogą być użyte.

6
6
6
2010-05-27 23:04:39 +0000

Nie ma prostego sposobu, aby to zrobić w systemie Windows.  Istnieje kilka programów, które twierdzą, że są w stanie zachować daty utworzenia plików. Oto kilka programów, które mogą to zrobić http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (link uszkodzony; nie ma go w Wayback Machine).

Używając tylko Eksploratora Windows nie jest to możliwe. Jeśli spojrzysz na dokumentację funkcji CopyFile CopyFile function (winbase.h) , zobaczysz, że unika ona tego tematu.  Ale&nbsp CopyFile function (Windows Developer Preview) (a 2012 archive of the same URL) says:

File times semantics

Ten artykuł powinien dokumentować semantykę w odniesieniu do czasu tworzenia/modyfikacji/ dostępu do pliku.

Czas utworzenia: jeśli plik docelowy już istnieje, jego czas utworzenia jest zachowany, w przeciwnym razie jest ustawiony na aktualny czas systemowy.
Czas ostatniej modyfikacji: zawsze kopiowany z czasu modyfikacji pliku źródłowego.
Czas ostatniego dostępu: zawsze ustawiany na aktualny czas systemowy.

4
Advertisement
4
4
2011-07-26 15:54:51 +0000
Advertisement

Synchronize It! ](http://www.grigsoft.com/wndsync.htm) 3.5 zachowuje wszystkie znaczniki czasu (plików i folderów, modyfikacji i tworzenia). Jest to jedyny znany mi program na Windows XP, który robi to bezbłędnie, oprócz Robocopy, a próbowałem wielu. Uważaj jednak, może on produkować uszkodzone pliki z plikami źródłowymi pobranymi za pomocą programów takich jak FlashGet czy Orbit Downloader (pliki wynikowe mają ten sam rozmiar, ale tylko 25kB jest faktycznie kopiowane - reszta jest wypełniona zerami). Zapytałem twórcę tego oprogramowania, czy mógłby się dowiedzieć dlaczego tak się dzieje, ale nie miał pojęcia; przypuszczam, że ma to związek z tym, że takie oprogramowanie pobiera pliki w małych pakietach (w celu optymalizacji prędkości), a moja partycja danych jest bardzo pofragmentowana.

Robocopy XP026 jest rzeczywiście dołączony do Windows Vista, ale działa na Windows XP. Poszukaj “Robocopy XP026”, lub mogę wysłać plik tutaj, ponieważ nie jest on łatwy do znalezienia. Możesz też zainstalować Robocopy GUI, a następnie wyszukać plik robocopy.exe w folderze System32, aby użyć go z linii poleceń. Plik, który ja posiadam ma 208kB i numer wersji 5.1.2600.26.

Wydaje się jednak, że jest błąd z “trybem backupu”:

http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx

Robocopy w wersji XP027 najwyraźniej nie ma już tego błędu, ale nie działa na Windows XP.

3
3
3
2010-06-01 18:32:19 +0000

RoboCopy powinien być w stanie to zrobić za pomocą przełącznika COPYALL. Możesz pobrać wersję GUI z Microsoft Technet .

1
Advertisement
1
1
2014-10-19 01:19:44 +0000
Advertisement

Najprostszym sposobem dla mnie, jak dotąd, jest metoda “wyślij do”. Nie wymaga ona żadnych zewnętrznych aplikacji. Z mojego doświadczenia wynika, że zachowuje ona wszystkie oryginalne atrybuty pliku.

Metodą, której używałem wcześniej, była metoda kompresji/zipowania folderu. Choć na pewno trwa to dłużej, ponieważ pliki są nie tylko kopiowane, ale także przetwarzane i kompresowane, zarówno podczas kompresji, jak i dekompresji.

%appdata%\Microsoft\Windows\SendTo lub. C:\Users\ _______ \AppData\Roaming\Microsoft\Windows\SendTo

Dodaj skrót do folderu, w którym chcesz je skopiować, a element ten pojawi się w menu sendto po kliknięciu prawym przyciskiem myszy pliku, który chcesz skopiować.

1
1
1
2012-12-06 02:51:42 +0000

FastCopy ](http://ipmsg.org/tools/fastcopy.html.en) może to zrobić i jest darmowy.

1
Advertisement
1
1
2013-08-19 19:37:45 +0000
Advertisement
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Nie jestem pewien, który przełącznik utrzymuje datę pliku, ale to działa. Następnie zipuję katalog C:™tempPics, który również utrzymuje daty plików, jak wspomniano wcześniej.

0
0
0
2012-10-14 14:50:02 +0000

W prosty sposób można przenosić foldery i katalogi zachowując przy tym datę utworzenia. Wystarczy przytrzymać Shift i przeciągnąć folder do nowej lokalizacji (polecenie przenieś). Data modyfikacji będzie aktualną datą, ale Data utworzenia zachowa oryginalną datę.

0
0
0
2014-05-02 08:34:44 +0000

Osiągam to za pomocą

rsync -avu –modify-window=3602 source_directory/ target_directory/

(to jest naprawdę używane jako narzędzie do synchronizacji z jednego katalogu do innego mirrora, a opcja timewindow jest po to, aby zapobiec problemom, gdy systemy windows przesuwają zegary o 1 godzinę dla oszczędności światła dziennego itp.

w środowisku cygwin wewnątrz windows lub linuksowej maszynie wirtualnej wewnątrz windows z zamontowanymi napędami windows (np. z virtualbox)

NB cygwin i virtualbox są darmowe i umożliwiają posiadanie w mniejszym lub większym stopniu funkcjonalności linuksa na windows - oba wymagają trochę konfiguracji - szczególnie virtualbox, ale mają wiele zalet….

Mój własny problem polegał na tym, że pliki miały poprawny czas, ale katalogi nie. rsync uporządkował daty w katalogach, jak również daty w plikach.

0
0
0
2014-01-01 07:59:10 +0000

xcopy działa w tym przypadku dobrze. Wystarczy podać flagę /k, aby skopiować atrybuty.

Syntaktyka xcopy Źródło [Miejsce docelowe][Parametry opcjonalne]

Polecenie xcopy może skopiować jeden lub więcej plików lub drzew katalogów z jednej lokalizacji do innej. Polecenie xcopy jest zawarte we wszystkich wersjach systemu Windows od Windows 95 do Windows 8.

0
0
0
2014-08-12 14:57:58 +0000

To polecenie kopiuje ten sam znacznik czasu dla plików. Zauważ, że nie robi ono dokładnie tego samego znacznika czasu dla samych folderów. Zauważ również, że umieściłem cudzysłów zarówno wokół źródła (Temp1) jak i miejsca docelowego (Temp2). Jest to zrobione na wypadek gdyby w ścieżkach znajdowały się spacje. Ja nie mam żadnych spacji, ale pomyślałem, że powinienem to uwzględnić dla najgorszych scenariuszy.

robocopy /E /copy:DAT "C:\Temp1" "c:\Temp2"

Aby znaczniki czasu były takie same również dla folderów:

robocopy /E /copy:DAT /dcopy:DAT “C:\Temp1” “c:\Temp2”

0
0
0
2013-02-11 13:33:03 +0000

Prosty sposób, aby przenieść foldery i zachować datę i czas utworzenia użyć tych narzędzi http://lantechsoft.com/data-copy.html

Innym, gdzie można zachować daty podczas kopiowania plików. http://technocomsolutions.com/data-copy-tool.html

Advertisement

Pytania pokrewne

3
19
10
28
3
Advertisement