다음과 같이 davfs를 사용하여 Box.com 클라우드 저장소를 설치했습니다.이 지침. Box.com 계정을 /home/me/Cloud/Box에 설치했습니다.
탑재된 파일 시스템은 터미널뿐만 아니라 Dolphin을 통해서도 접근할 수 있습니다. 조금 느리긴 하지만 전체 디렉터리 구조를 오류 없이 나열(ls)하고 탐색할 수 있습니다.
다음으로 다음과 같이 rsync를 실행해 보았습니다.
rsync -auvz --max-size=250M --exclude '.*' /home/me/Music/ /home/me/Cloud/Box/Music
나는 또한 다음을 시도했습니다.
rsync -auv /home/me/Music/A /home/me/Cloud/Box/Music
및 rsync 명령의 다른 변형. 이 명령은 davfs 마운트를 통해 로컬 파일 시스템(/home/me/Music/)에서 Box 클라우드(/home/me/Cloud/Box/Music)로 내 음악을 복사합니다.
나는 항상 다음과 같은 형태의 오류를 많이 겪습니다.
rsync: mkstemp <filename> failed: Invalid argument (22)
구체적인 예는 다음과 같습니다.
rsync: mkstemp "/home/me/Cloud/Box/Music/VariousArtists/.01_Track_1.mp3.YVmFI9" failed: Invalid argument (22)
이 모든 일은 빠르고 안정적인 케이블 모뎀 연결(12 Mb/s 업로드 속도)을 갖춘 Kubuntu 12.04 LTS 64비트 서버급 하드웨어에서 발생합니다.
답변1
1. 파일명 특수문자 문제
파일명에 특수문자가 있나요? .
예를 들어, 이러한 파일을 작성하는 파일 시스템에 따라 파일 앞에 점( )을 붙이는 것이 허용되지 않을 수도 있습니다.
2. rsync 수정 시간 및 webdav2 관련 문제
나는 이것을 만났다블로그 게시물설명된 문제는 rsync
webdav2 설치의 box.com 디렉토리에 파일 수정 시간을 작성/추적하는 데 문제가 있는 것입니다.
마운트된 파일 시스템에서 문제는 다음과 같이 나타납니다.
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
동일한 문서에 해결 방법이 나와 있습니다.
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
이것은 사용하기 좋은 방법 rsync
이지만 이제는 체크섬이 아닌 크기를 기준으로 파일을 비교합니다.
3. davfs2(WebDAV) 관련 문제
나는 다음과 같은 제목으로 이것을 발견했습니다.davfs2를 통한 rsync?Sourceforge의 WebDAV(davfs) 포럼에 있습니다. 누군가 WebDAV를 사용하여 온라인 스토리지 공급자를 마운트하고 WebDAV를 통해 마운트된 스토리지에서 rsync를 수행하려는 비슷한 상황에 대해 물었습니다. 이게 그 중 하나야WebDAV 개발자(Werner Baumann)가 이 주제에 대해 할 말이 있습니다..
Werner의 답변에서 발췌
davfs2는 완전한 파일만 업로드합니다. rsync가 일반적으로 수행하는 증분 작업을 수행할 수 없으므로 rsync가 매우 효율적입니다.
davfs2는 디스크의 로컬 캐시를 사용합니다. 이렇게 하면 반응성이 향상되고 애플리케이션이 이점을 누릴 수 있습니다. 하지만 로컬 디스크 공간이 필요합니다. rsync가 로컬 캐시를 사용하여 대부분의 작업을 수행할 수 있도록 큰 캐시 크기를 허용해야 하며 davfs2는 rsync가 완료되는 동안 백그라운드에서 대부분의 파일을 업로드합니다.
Werner는 계속해서 다음을 제안했습니다.
이 경우 단점이 될 수 있습니다. rsync가 원격 호스트에서 파일을 읽을 때 해당 파일이 아직 존재하지 않는 경우 먼저 davfs2를 통해 로컬 캐시로 전송해야 합니다. 이로 인해 프로세스가 불필요하게 느려질 수 있습니다. 귀하의 경우 rsync는 복잡한 복사 프로그램으로만 사용되므로 대신 cp를 사용하는 것이 좋습니다. cp에는 davfs2 파일 시스템(=smartdrive)에 있는 파일보다 최신 파일만 복사하기 위한 옵션(-u)이 있으며 파일을 읽을 필요는 없고 파일 메타데이터(예: mtime)만 필요합니다.
"cp -pru 디렉토리/to/backup dav/"와 같은 명령이 작업을 수행할 수 있습니다. 파일을 다운로드하면 안 됩니다(rsync처럼 다운로드할 수도 있지만 확실하지 않습니다)(cp 및 rsync에 대한 설명서를 확인하세요).
옵션?
따라서 @Anthon이 제안한 대로 해당 cp -u
방법을 사용하여 파일을 복사할 수 있습니다. 이 방법은 비교 요소로 파일 크기만 사용하므로 완전히 신뢰할 수는 없습니다.
파일을 비교할 때 수정 시간만 살펴보는 것은 사용하면 안 됩니다 cp -pru
.Werner는 이 게시물에서 그 이유를 설명합니다.:
모드 타이밍 문제에 대한 발췌
davfs2 파일 시스템을 마운트 해제했다가 나중에 다시 마운트하면 서버의 시간 정보에 따라 파일 시간이 변경될 수 있습니다. cp -pu 및 rsync와 같은 도구는 이 시간에 의존하여 어떤 파일이 변경되었는지 확인할 수 없습니다.
따라서 수정 시간과 관련된 다양한 문제를 고려하면 순수한 체크섬 접근 방식이 더 적절해 보입니다.
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
답변2
이 문제는 rsync
box.com 및/또는 davfs에서 인식되지 않는 파일 이름으로 임시 파일이 생성되었기 때문에 발생합니다. 따라서 해당 파일은 .01_Track_1.mp3.YVmFI9
시스템에 존재하지 않지만 임시 파일입니다.인공 생산의 rsync
. 내 생각으로는: 모든 파일에서 오류가 발생하지 않으면 업로드된(및 변경된) 파일에서만 오류가 발생할 수 있습니다.
그것한때는 불가능했었지이 임시 파일 생성을 해제했지만 이제 옵션을 추가하면 더 나은 행운을 누릴 수 있습니다 --inplace
. 그러나 rsync 데몬과 통신하지 않으면(davfs를 사용하는 경우가 아님) rsync 사용의 이점이 명확하지 않습니다.
따라서 대안으로 시도해 볼 수 있습니다 cp --update
. 소스가 다음과 같은 경우에만 파일을 복사합니다.최신목적지보다 새 파일과 ID3 태그가 변경된 파일은 복사되지만 다른 파일은 복사되지 않습니다.
또는 더 많은 제어가 필요한 경우 다음을 사용하십시오 find
.
cd /home/me/Music/
find * -size -250M -print0 | cpio -pdmv0 /home/me/Cloud/Box/Music
이렇게 하면 계층 구조가 유지되고 cpio
오래되지 않은 기존 파일을 덮어쓰지 않습니다.
답변3
이 오류를 중지하려면 Invalid argument (22)
rsync가 davfs 대상에 임시 파일을 생성하는 것을 중지해야 했습니다.
rsync --temp-dir=/tmp
내 생각에 무슨 일이 일어나고 있는지는 rsync의 임시 파일 이름이 that으로 시작하는데 .
davfs가 그것을 허용하지 않는다는 것입니다. 그래서 나는 한 단계 더 나아가 rsync에게 .
.을 사용하고 있으므로 davfs 대상에서 디렉토리를 --delete
삭제하지 말라고 지시했습니다 .lost+found
rsync --temp-dir=/tmp --exclude lost+found --exclude '.*'