[완료] 파일 복사 후 검증 방법

qustus의 이미지

cpio로 한쪽 하드디스크에서 다른 쪽 하드디스크로 파일을 복사했습니다.
복사가 완료 됐고 잘 됐는 줄 알았는데 일부 파일이 용량이 0인 채로 생성되었습니다.
이번에는 적은 양의 파일을 복사해서 쉽게 찾을 수 있었지만
아직도 복사해야 할 파일들이 제법 많이 남았습니다...

파일을 복사한 후 원본과 복사본이 동일한지 검증하는 방법에는 어떤 게 있나요?

cpio, ls, sort, find 등의 명령어와 같이 사용할 수 있었으면 좋겠습니다..

whitelazy의 이미지

제일 단순한건 ls 랑 du 를 사용해서 총 파일 갯수와 총 용량이 같은지 보면되지요...

중간에 바이트단위로 오염된건 글쎄요 ;;diff때리면 나올려나...

http://www.google.co.kr/search?hl=ko&rlz=1C1GPMD_enKR315KR315&newwindow=1&q=directory+compare+linux&btnG=검색&lr=&aq=f&oq=

redneval의 이미지

md5sum 을 이용하면 되긴 하겠지만, 시간이 오래 걸릴 듯 합니다.

--------------------------------------------------------------------------

1. md5 파일 생성

# find source_directory -type f -print0 | xargs -0 md5sum > blahblah.md5

2. 생성된 md5 파일에서, 편집기나 sed 명령어를 이용하여

source_directory 문자열을 target_directory 로 파일경로를 적절히 바꿔줍니다.

3. md5 체크

# md5sum -c blahblah.md5

--------------------Signature--------------------
Light a candle before cursing the darkness.

qustus의 이미지

확인 결과 이상 없었습니다. 처음에는 왜 복사가 제대로 안 됐을까요...;;;
cpio 자체 문제는 물론 아니겠고 시스템 문제겠죠.
다른 분께도 참고가 될까 하여 작업 내용을 적어둡니다.

우선 cpio로 파일 복사.

find source_dir/ | cpio -pvda target_dir/

md5값을 구함.
이때 파일명에 특수 문자가 포함된 경우 제대로 처리되지 않기 때문에 inode를 이용.

for inode in $(find ! type -d -printf "%i\n"); do
find -inum $inode -exec md5sum -b '{}' \;
done

윗분이 알려주신 md5sum의 -c옵션을 몰라서
원본과 복사본의 md5sum을 각각 구하고 결과를 diff로 비교;;;

우선 정렬을 위해 MD5 체크섬 행을 편집해야 함.
(vi를 열고 "체크섬 파일명"으로 되어 있는 것을 "파일명 체크섬"으로 바꿈)

:%S/\(.*\)\ \*\(.*\)/\2 \1/g

그리고 정렬...
LC_COLLATE는 정렬을 위해 사용되는 로케일 환경 변수라 함.

export LC_COLLATE=ko_KR.UTF-8
sort src.md5sum.list > src.md5sum.list.sorted
sort copy.md5sum.list > copy.md5sum.list.sorted
diff src.md5sum.list.sorted copy.md5sum.list.sorted > src-copy.diff

diff 결과 차이가 없으면 오케이~~

도움 주신 분들께 감사드립니다.
재밌었어요~ ㅎㅎㅎ

세이군의 이미지

sort 명령에는 +옵션이 있습니다. 그래서 sort +2와 같이 하면 2번째 항목을 기준으로 정렬을 합니다.
참고] man sort

qustus의 이미지

아 그런 ^^;;;;;; 고맙습니다.

근데 저는 man sort해도 + 옵션 설명이 안 나오는데요...
(sort 버전은 5.97이고 데비안 etch 쓰고 있습니다.)
아무튼 알려주셔서 감사합니다~

세이군의 이미지

중복삭제

송효진의 이미지

sort 7.1
-k 옵션이네요.

ls -al | sort -k 8

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

cinsk의 이미지

aero의 이미지

.
.
.
.

Perl File::DirCompare ( http://search.cpan.org/dist/File-DirCompare/ ) 모듈로

perl -MFile::DirCompare -e 'File::DirCompare->compare("./dirA","./dirB", sub{ print join(" <-> ",@_),"\n" } )'

결과
dirA/b.txt <-> dirB/b.txt    <- 두 디렉토리에 이름이 같은 파일이 있으나 다를 경우
 <-> dirB/c.txt              <- 한쪽에는 없는데 다른 쪽에는 있을 경우

diff 명령으로 하면

diff -r --brief ./dirA ./dirB

결과
Files ./dirA/b.txt and ./dirB/b.txt differ
Only in ./dirB: c.txt

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.