저는 Unison을 사용하여 여러 컴퓨터에 걸쳐 집을 동기화하고 있으며 그 문제를 제외한 모든 문제를 해결했습니다.
Dropbox 구성이 부분적으로 건너뛰었기 때문에 Dropbox는 구성이 없다고 생각하고 구성 마법사를 다시 실행합니다.
Dropbox와 관련된 Unison 출력은 다음과 같습니다.
Reconciling changes
<-?-- dir .dropbox
<---- dir .dropbox-dist
<---- dir .dropbox-dist-new
[BGN] Copying .dropbox from /home/.nfs/jorge.suarez/linux-home to /home/remoto/jorge.suarez
[END] Copying .dropbox
[BGN] Copying .dropbox-dist from /home/.nfs/jorge.suarez/linux-home to /home/remoto/jorge.suarez
[END] Copying .dropbox-dist
[BGN] Copying .dropbox-dist-new from /home/.nfs/jorge.suarez/linux-home to /home/remoto/jorge.suarez
[END] Copying .dropbox-dist-new
partially transferred: .dropbox
다음은 디렉토리의 원래 내용입니다.
$ ls -lah
total 22M
drwx------ 3 jorge.suarez users 3,9K 2013-01-25 21:39 .
drwxr-xr-x 43 jorge.suarez users 3,9K 2013-01-25 21:40 ..
srw------- 1 jorge.suarez users 0 2013-01-25 21:39 command_socket
-rw------- 1 jorge.suarez users 3,0K 2013-01-25 21:39 config.db
-rw------- 1 jorge.suarez users 20K 2013-01-25 21:39 config.dbx
-rw------- 1 jorge.suarez users 66K 2013-01-25 21:39 deleted.dbx
-rw------- 1 jorge.suarez users 4 2013-01-25 21:39 dropbox.pid
-rw------- 1 jorge.suarez users 2,0M 2013-01-25 21:39 filecache.dbx
-rw------- 1 jorge.suarez users 89 2013-01-25 21:39 host.db
-rw------- 1 jorge.suarez users 221 2013-01-25 21:39 host.dbx
-rw------- 1 jorge.suarez users 81 2013-01-25 21:39 hostkeys
srw------- 1 jorge.suarez users 0 2013-01-25 21:39 iface_socket
drwx------ 2 jorge.suarez users 3,9K 2013-01-25 21:39 l
-rw------- 1 jorge.suarez users 13K 2013-01-25 21:39 photo.dbx
-rw------- 1 jorge.suarez users 20M 2013-01-25 21:39 sigstore.dbx
-rw------- 1 jorge.suarez users 232 2013-01-25 21:39 unlink.db
Dropbox가 출시되기 직전에 동기화됨:
$ ls -lah
total 22M
drwx------ 3 jorge.suarez users 4,0K Xan 25 22:09 .
drwx------ 43 jorge.suarez users 4,0K Xan 25 22:10 ..
-rw------- 1 jorge.suarez users 3,0K Xan 25 22:09 config.db
-rw------- 1 jorge.suarez users 20K Xan 25 22:09 config.dbx
-rw------- 1 jorge.suarez users 66K Xan 25 22:09 deleted.dbx
-rw------- 1 jorge.suarez users 4 Xan 25 22:09 dropbox.pid
-rw------- 1 jorge.suarez users 2,0M Xan 25 22:09 filecache.dbx
-rw------- 1 jorge.suarez users 89 Xan 25 22:09 host.db
-rw------- 1 jorge.suarez users 221 Xan 25 22:09 host.dbx
-rw------- 1 jorge.suarez users 81 Xan 25 22:09 hostkeys
drwx------ 2 jorge.suarez users 4,0K Xan 25 22:09 l
-rw------- 1 jorge.suarez users 13K Xan 25 22:09 photo.dbx
-rw------- 1 jorge.suarez users 20M Xan 25 22:09 sigstore.dbx
-rw------- 1 jorge.suarez users 232 Xan 25 22:09 unlink.db
소켓 파일이라 생략 iface_socket
된 것 같습니다 . command_socket
내가 할 수 있는게 있습니까?
해결 방법으로 Unison 출력을 구문 분석하고 소켓 파일을 수동으로 생성할 수 있습니다. 이렇게 하면 이 특정 문제가 해결되지만 Unison 출력에 건너뛴 파일의 이름이 포함되어 있지 않기 때문에 다른 소켓 파일에는 문제가 남아 있습니다.
답변1
Unison 2.40(내가 작성한 최신 버전)부터 Unison은 일반 파일, 디렉터리 또는 심볼릭 링크가 아닌 파일을 지원하지 않습니다. 이전 버전에서는 특수 파일이 발견되면 전송이 중단되었습니다. 2.40부터 이러한 파일은 무시됩니다. 2.40.65에서는 첫 번째 동기화에서는 무시된 파일 이름이 표시되지 않지만 후속 동기화에서는 표시됩니다. 따라서 Unison을 수동으로 한 번 실행한 다음 출력을 구문 분석하여 특수 파일을 검색할 수 있습니다.
다른 옵션은 Unison을 패치하거나 수동으로 특수 파일을 찾아 복사하는 것입니다.
이러한 파일을 동기화하는 한 가지 방법은 해당 파일의 저장소를 유지하는 것입니다. 예를 들어, 병렬 계층을 생성하고, 일반 파일로 특수 파일을 인코딩하고, Unison으로 동기화하고, 동기화 후 병렬 계층을 다시 디코딩합니다. 함께 달리기 전에 양측은 다음을 수행합니다.
mkdir -p .pipes .sockets
find . -type p -exec sh -c '
mkdir -p ".pipes/${0%/*}";
touch -r "$0" ".pipes/$0"; chmod -r "$0" ".pipes/$0"
' {} \;
find . -type s -exec sh -c '
mkdir -p ".sockets/${0%/*}";
touch -r "$0" ".sockets/$0"; chmod -r "$0" ".sockets/$0"
' {} \;
꾸준히 실행한 후:
(cd .pipes &&
find -type f -exec sh -c '
[ -p "../$0" ] && exit;
mkfifo "../$0";
touch -r "$0" "../$0"; chmod -r "$0" "../$0"
' {} \;)
find -type p -exec '[ -e ".pipes/$0" ] || rm "$0"' {} \;
(cd .sockets &&
find -type f -exec sh -c '
[ -S "../$0" ] && exit;
python -c "import os, sys; os.mknod(sys.argv[1], 0140000)" "../$0";
touch -r "$0" "../$0"; chmod -r "$0" "../$0"
' {} \;)
find -type s -exec '[ -e ".sockets/$0" ] || rm "$0"' {} \;
(경고: 테스트되지 않은 코드. GNU 도구(비포함 Linux 포함)를 사용한다고 가정합니다.)
나는 이것이 보증된 것보다 더 복잡하다고 생각합니다. 기존 명명된 파이프나 소켓에 의존하는 애플리케이션은 거의 없습니다. 대부분 필요에 따라 생성합니다. Dropbox는 제가 처음 들어보는 사례입니다. 그래서 저는 일시적인 접근 방식을 취해야겠다고 생각했습니다. 동기화할 때 소켓을 건너뛰고 새 계정 생성 프로세스 중에 (Unison 프로필 생성 및 기타 작업과 함께) Dropbox용 소켓을 생성하는 것입니다.