Windows에서 파일을 복사 할 때 파일 특성을 유지하는 방법은 무엇입니까?


41

Linux에서는 다음과 같이 간단하게 수행 할 수 있습니다.

cp -pr directory

Windows에서 어떻게합니까? Windows 탐색기에서 수행 할 수 있습니까? 어떤 GUI 도구 제안?

NTFS 권한 및 작성 / 수정 / 액세스 시간을 유지할 수 있으면 가장 좋습니다. 최소한 파일 디렉토리 의 수정 날짜를 유지해야합니다 . Windows 탐색기의 사본은 디렉토리의 수정 날짜를 유지하지 않습니다.



1
나는 그것이 중복이라고 생각하지 않습니다. 파일 작성 시간은 파일 속성 중 하나 일뿐입니다.
netvope

이 질문에 대한 답변은 모든 타임 스탬프, mtime, ctime 및 atime을 보존하는 소프트웨어를 제공합니다.
John T

support.microsoft.com/kb/310316 에 관심이있을 수 있습니다 . 불행하게도 이러한 레지스트리 키 중 일부는 Vista 이상에서 더 이상 작동하지 않습니다.
Amro

robocopy c:\folderA c:\folderB /mir /it당신이 필요한 전부입니다. 그러면 c : \ folderB가 완전히 삭제되고 c : \ folderA를 미러링하는 새 c : \ folderB가 생성됩니다.
Pacerier

답변:


6

Windows에서는이를 수행하는 간단한 방법이 없습니다. 파일 작성 날짜를 보존 할 수 있다고 주장하는 여러 프로그램이 있습니다.
여기에 트릭 할 수있는 몇 가지 프로그램입니다 http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html   (링크 브로큰는,하지 뒤로 머신에서).

Windows 탐색기 만 사용하면 불가능합니다. CopyFile, CopyFile 함수 (winbase.h) 에 대한 문서를 보면 주제를 피할 수 있습니다. 그러나  CopyFile 기능 (Windows Developer Preview) (같은 URL의 2012 년 아카이브)은 다음과 같이 말합니다.

파일 시간 의미

이 기사는 파일 생성 / 수정 / 액세스 시간에 대한 의미를 문서화해야합니다.

작성 시간 : 대상 파일이 이미 존재하면 작성 시간이 유지되고 , 그렇지 않으면 현재 시스템 시간으로 설정됩니다.
최종 수정 시간 : 항상 소스 파일의 수정 시간에서 복사됩니다.
마지막 액세스 시간 : 항상 현재 시스템 시간으로 설정하십시오.


링크가 끊어졌습니다.
Smile4ever

21

RoboCopy는 / DCOPY : T 스위치를 사용하여 디렉토리의 mtime을 보존 할 수 있지만 Vista 이상에서만 작동합니다. ACL을 보존 할 수도 있습니다. 또는 디렉토리 mtime, ACL 및 ADS 를 유지하도록 FastCopy 를 구성 할 수 있습니다 .


Windows에서는 파일 / 폴더 속성을 복사 할뿐만 아니라 전체 복사 프로세스 중에 파일 무결성 및 오류 처리를 올바르게 수행 할 수 있으므로 robocopy가 권장되는 방법입니다.
megamorf

@ megamorf : robocopy는 어떤 방법으로 특별한 작업을 수행합니까? 데이터의 체크섬이나 해싱을 수행하지 않으며 거의 ​​모든 다른 프로그램과 마찬가지로 오류를보고하기 위해 OS에 의존합니다.
afrazier

현재 robocopy에는 사전 체크섬 비교 기능이 없습니다. 그러나 일반적으로 robocopy는 오류가 발생하면 전체 파일을 다시 전송합니다. 전체 파일을 다시 전송하지 않고 오류가 발생한 후 나머지 파일을 대상에 다시 쓰려면 / Z 스위치를 지정하십시오.
megamorf

@afrazier, 왜 간단하게 사용하지 /mir않습니까?
Pacerier

2
@Pacerier, 질문은 트리를 미러링하는 것이 아니라 파일과 폴더를 복사하고 가능한 많은 메타 데이터를 보존하는 것입니다. /mir대상 폴더에서 데이터를 제거 할 뿐만 아니라 /dcopy:t디렉토리 mtime /copyall을 보존하고 파일 타임 스탬프 이상을 보존해야합니다.
afrazier

19

... 또는 압축 방법을 "저장"으로 설정 한 zip 아카이브를 만든 다음 복사하려는 파일의 압축을 풉니 다. 날짜 / 시간 속성은 원본 파일과 동일합니다.


멋진 생각. 그러나 이것은 파일 속성 등과 같은 "다른 것들"을 복사합니까?
Pacerier

2
항상 작동하지는 않습니다. 예를 들어 7-zip의 경우 7zip 압축을 사용하면 파일 시간 중 하나가 보존되지 않습니다 (어떤 것을 잊었는지). ZIP을 사용하면 디렉토리 시간이 보존되지 않습니다. ZIP을 사용하면 생성 시간과 수정 시간을 모두 유지할 수 있지만 7zip은 압축 해제 방법에 따라 일부 시간 만 유지합니다 : 프로그램 메뉴에서 드래그 앤 드롭 또는 추출 여부 . 어린 메뚜기를 잘 테스트하십시오.
Jon

3
대단히 감사합니다. ZIP 형식으로 7zip을 사용했습니다 (작성 날짜는 7Z 형식으로 유지되지 않음).
AFract

이를 위해 사용할 특정 명령을 추가 할 수 있습니까? 제안한 압축 방법을 사용하는 특정 명령의 예? 이는 더 많은 제안이나 의견과 달리 전체 답변을 더 많이 만들어 줄 것입니다. 또한 수많은 사람들이 제안을 수행하는 방법을 찾기 위해 검색을 수행하지 않아도됩니다. 또한 보너스로 모든 정보를 제공하면 다른 모든 사람들이 (검색) 휠을 재발 명하는 것을
막고 공감대를

6

Robocopy 명령 줄 도구 (대부분의 창 버전과 함께 제공)
내 Windows 10 컴퓨터에서C:\Windows\System32

에서 위키 백과 , 그것은 파일을 보존 할 수있는 옵션의 다음 세트와 함께 사용할 수 있습니다 디렉터리 타임 스탬프뿐만 아니라 다른 속성을 :

Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0

  • /DCOPY:T원래 디렉토리의 타임 스탬프 유지 (버전 XP026 이상 필요)
  • /E: 빈 디렉토리를 포함하여 디렉토리를 재귀 적으로 복사
  • /R:0: 잠긴 파일을 재 시도하지 마십시오 (실패한 사본의 재시도 횟수 기본값은 1 백만입니다).

  • /COPYALL: 복사 모든 파일 정보
    (상당 /COPY:DATSOU,

    • D= 데이터,
    • A= 속성,
    • T= 파일 타임 스탬프 ,
    • S= 보안 = NTFS ACL,
    • O= 소유자 정보,
    • U= 감사 정보),

당신이 경우 에만 날짜 및 디렉터리 타임 스탬프를 보존하고 싶지만 할 수 없는 빈 하위 디렉토리가 복사 원하는 않는 하지 다른 속성은 다음 사용할 수 있습니다 보존합니다 :
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

비어 있지 않은 서브 디렉토리를 /S복사하는 곳

전체 구문을 보려면 robocopy /?명령 프롬프트에서 입력하거나 https://ss64.com/nt/robocopy.htmlhttps://techjourney.net/robocopy-syntax-command-line 블로그 게시물을 살펴보십시오. 스위치 및 예제 /

내가 최근에 실행 한 명령의 예 :
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

2 개의 서브 디렉토리를 제외하면 /XD플래그를 두 번 사용해야하는 방법에 주목하십시오 . 또한 두 번째 디렉토리 제외는 디렉토리 이름에 공백이 있기 때문에 따옴표를 사용합니다.

마지막으로, /L플래그를 추가하여 실제로 수행하기 전에 명령을 테스트 할 수 있습니다 . 이런 방식으로 원하지 않는 디렉토리 / 파일을 복사 (또는 제거)하지 않으며 명령에 오류가 없는지 확인할 수 있습니다.

편집 : 루트 디렉토리 (일명 드라이브)에서 폴더 (비 루트 디렉토리)로 복사 할 때 발생하는 문제

위의 예제 명령을 실행 한 후 디렉토리가 보이지 않았습니다! (비록 show hidden files와는 show system files윈도우 10에서 확인했다!)에 따라 다음 명령 https://serverfault.com/a/455029/399723 이 고정을 :

attrib -h -s C:\D_backup

또는 /A-:SH"시스템 파일에서 숨겨진 속성 설정 해제"를 추가하면 https://serverfault.com/a/565804/399723에 따라 디렉토리가 처음에 숨겨지지 않을 수 있습니다 . https://ss64.com/nt/robocopy.html참조하십시오 .
토론 은 솔루션으로이 옵션에 대해 더 많은 정보를 제공합니다.

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

다른 소프트웨어 :

또는 명령 행을 사용하지 않으려면 GUI 버전의 robocopy를 다운로드 할 수 있습니다 .

다른 Windows 유틸리티는 XCopy 이지만 Windows 10에 포함되어 있지만 더 이상 사용되지 않습니다. 문제에 대한 링크를 참조하십시오.

RoboCopy Wikipedia 페이지 (이 게시물 상단에 링크 됨)에는 사용할 수있는 다른 소프트웨어가 나열되어 있습니다.


1
좋은 대답입니다. 첫 번째는 다소 구식이기 때문에 선택한 것이어야합니다. 클라이언트 백업에서 빈 디렉토리를 다듬기 위해 Windows 7부터 robocopy를 사용했지만 Windows XP부터 사용할 수 있다고 생각합니다.
DGoiko

@DGoiko 나는 당신이 옳다고 생각합니다. 확실히 Windows 7에서 광범위하게 사용했습니다. 불행히도 특별한 Windows 7 Pro 랩탑 구매는 더 이상 옵션이 아닙니다. 그래서 저는 이제 Win 10을 가지고 있습니다. XP를 받았을 때 봤다고 생각하지는 않지만 오랜 시간이 걸렸습니다. 잘 알려지지 않았습니다.
SherylHohman

Robocopy GUI가 우수합니다.
Eddie Kumar

4

동기화하세요! 3.5 모든 타임 스탬프 (파일 및 폴더, 수정 및 작성)를 유지합니다. Robocopy 옆에서 완벽하게 Windows XP에서 알고있는 유일한 소프트웨어이며 많은 시도를했습니다. 그러나 FlashGet 또는 Orbit Downloader와 같은 소프트웨어를 사용하여 다운로드 한 소스 파일이있는 손상된 파일을 생성 할 수 있습니다 (결과 파일의 크기는 같지만 실제로는 25kB 만 복사됩니다. 나머지는 0으로 채워짐). 나는 소프트웨어 제작자에게 왜 그 이유를 알아낼 수 있는지 물었다. 그러나 그는 실마리가 없었다. 나는 소프트웨어가 작은 패킷 (파일 속도를 최적화하기 위해)으로 파일을 다운로드하고 내 데이터 파티션이 크게 조각화되는 것과 관련이 있다고 생각합니다.

Robocopy XP026은 실제로 Windows Vista에 포함되어 있지만 Windows XP에서 작동합니다. "Robocopy XP026"을 검색하거나 찾기가 쉽지 않으므로 여기로 파일을 보낼 수 있습니다. 또는 Robocopy GUI를 설치 한 다음 robocopy.exeSystem32 폴더에서 파일 을 검색 하여 명령 줄에서 사용할 수 있습니다. 내가 가진 파일은 208kB이고 버전 번호는 5.1.2600.26입니다.

"백업 모드"에 버그가있는 것 같습니다.

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

Robocopy 버전 XP027에는 더 이상이 버그가 없지만 Windows XP에서는 작동하지 않습니다.


Bittorrent와 같은 파일 다운로드 유틸리티는 디스크에 파일의 전체 크기 (0으로 채워짐)를 할당하고 여러 소스에서 섹션을 다운로드하여 파일의 올바른 위치에 저장합니다. 시작할 때 파일의 수는 0000 개입니다. 파일을 완전히 다운로드하거나 동기화하지 않았습니다! 0000을 너무 많이보고 사본을 포기했습니다.
Chloe

감사! 나는 그것을 동기화 사용! 너무 빠릅니다! SyncToy와 Unison이 파일 수정 시간을 엉망으로 만들었습니다. Unison은 Cygwin 심볼릭 링크를 손상 시켰습니다. SyncToy는 대상의 교차점에있는 것으로 밝혀진 'My Music'을 복사하고 있었지만 새로 고쳤을 때 모든 것이 동일하더라도 다시 복사하고 싶었습니다.
Chloe



1
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

어느 스위치가 파일 날짜를 유지하는지 잘 모르겠지만 작동합니다. 그런 다음 C : \ temp \ Pics 디렉토리를 압축하여 앞에서 언급 한대로 파일 날짜를 유지합니다.


1
사본을 압축하면이 토론에 어떻게 맞습니까?
Scott

또한 질문을 한 사람을 차지하는 것으로 보이는 압축 파일에 대한 타임 스탬프를 유지함으로써 적합합니다. 천만에요, 스캇 올바른 답변이 아니라면 유용한 답변을 제공합니다.
amn

이렇게하면 파일 날짜 / 시간은 유지되지만 폴더에는 유지되지 않습니다.
barneco

1

지금까지 가장 간단한 방법은 "보내기"방법입니다. 외부 응용 프로그램이 필요하지 않습니다. 내 경험상 모든 원본 파일 속성을 유지합니다.

이전에 사용한 방법은 compression / zip 폴더 방법이었습니다. 압축 및 압축 해제시 파일이 복사 될뿐 아니라 처리 및 압축되기 때문에 시간이 오래 걸리는 것은 확실합니다.

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

복사하려는 폴더에 바로 가기를 추가하면 복사 sendto할 파일을 마우스 오른쪽 버튼으로 클릭하면 메뉴 에 항목이 나타납니다 .


"오른쪽 클릭> 보내기"를 사용하는 트릭을 공유해 주셔서 감사합니다. 생성 날짜를 제외하고 작동합니다. 이전에는 기본 xcopy 명령을 사용했습니다 xcopy Source Destination /kes. 합니다 ( k플래그 수정 타임 스탬프를 보존 할 수 있지만, 생성 날짜는 유지되지 않는다). 압축하는 압축 방법 (또는 rar)은 좋은 방법이지만 종종 너무 오래 걸립니다.
OuzoPower 2016 년

0

폴더와 디렉토리를 이동하고 생성 날짜를 유지하는 것은 간단합니다. Shift폴더를 잡고 새 위치로 드래그하십시오 (이동 명령). 수정 한 날짜는 현재 날짜이지만 작성된 날짜는 원래 날짜를 유지합니다.


2
이것을하지 마십시오! 원본 폴더에서 파일이 삭제됩니다. 이 작업을 시도하여 휴대 전화에서 복구 할 수없는 데이터를 잃어 버렸습니다 (CTRL + Z가 작동하지 않음).
BadAtPHP


0

xcopy는 이것을 위해 잘 작동합니다. 속성을 복사하려면 / k 플래그를 지정하십시오.

구문
xcopy 소스 [대상] [선택적 매개 변수]

xcopy 명령은 하나 이상의 파일 또는 디렉토리 트리를 한 위치에서 다른 위치로 복사 할 수 있습니다. xcopy 명령은 Windows 95에서 Windows 8까지 모든 버전의 Windows에 포함되어 있습니다.


1
방금 /K매개 변수를 시도했지만 생성 날짜가 유지되지 않았습니다.
CoDEmanX

그것은 때때로 작동하고 때로는 최선을 다하지 않는 것처럼 보입니다.)
SebastianH

0

나는 이것을 달성한다

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

(이것은 실제로 한 디렉토리에서 다른 미러로 동기화 도구로 사용되며 timewindow 옵션은 Linux 시스템과 비교하여 일광 절약 시간제 등을 위해 Windows 시스템이 시계를 1 시간 움직일 때 발생하는 문제를 방지하는 것입니다)

Windows 내부의 cygwin 환경 또는 Windows 드라이브가 장착 된 Windows 내부의 Linux 가상 머신 (예 : virtualbox)

NB cygwin과 virtualbox는 모두 무료이며 Windows에서 Linux 기능을 다소 또는 그 이상까지 가질 수 있습니다. 둘 다 약간의 설정이 필요합니다. 특히 virtualbox이지만 많은 이점이 있습니다 ....

내 자신의 문제는 파일의 시간이 정확하지만 디렉토리는 그렇지 않다는 것입니다. rsync는 디렉토리의 날짜와 파일의 날짜를 정렬했습니다.


0

이 명령은 파일에 대해 동일한 타임 스탬프를 복사합니다. 폴더 자체에 대해 정확히 동일한 타임 스탬프를 수행하지는 않습니다. 또한 소스 (Temp1)와 대상 (Temp2) 모두에 따옴표를 넣었습니다. 경로에 공백이있는 경우 수행됩니다. 공백이 없지만 최악의 시나리오에는 공백을 포함해야한다고 생각했습니다.

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

폴더에 대해서도 타임 스탬프를 동일하게 유지하려면

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.