집에서 일하는 동안 노트북의 콘텐츠가 많이 변경됩니다. 폐쇄되기 전에는 주로 사무실에 있었고 파일을 네트워크 드라이브에 수동으로 미러링할 수 있었습니다.
재택근무는 인터넷에 접속할 수 없다는 것을 의미합니다. 다음과 같은 list 명령을 사용하여 네트워크 드라이브 내용을 노트북 드라이브 내용과 비교해야 합니다.
touch ~/tmp/2021-07-25.txt -d 2021-07-25
stdbuf -i0 -o0 -e0 \
find ~/!(tmp) ~/.[^.]* \
-type f -newer ~/tmp/2021-07-25.txt \
-printf '%p\t%CY%Cm%Cd.%CH%CM\t%s\n' \
2>&1 | tee ~/tmp/find.out
"stdbuf" 명령은 후속 명령에 대한 버퍼링을 비활성화하여 수명의 징후를 볼 수 있도록 합니다. "find"에 대한 파일/폴더 인수는 "tmp"를 제외하고 "."로 시작하는 모든 파일/폴더를 포함하지만 현재 폴더 "."는 포함하지 않습니다. 상위 폴더 ".."가 아닌 자체 폴더입니다. printf 절은 다음 형식으로 파일 정보를 인쇄합니다.
File path <tab> YYYYMMDD.HHmm <tab> size
YYYY = 4-digit year
MM = 2-digit month
DD = 2-digit day-of-month
HH = 24-hour hour
MM = 2-digit minute
위의 내용은 노트북용입니다. 원격으로 라이브 데스크탑에 액세스하고 비교를 위해 유사한 네트워크 드라이브 목록을 작성할 수 있습니다. 여기서 찾을 파일/폴더 인수에는 "/i"(네트워크 드라이브에 대한 알파벳순 드라이브 매핑)만 포함됩니다. 이 최상위 폴더에는 "."으로 시작하는 파일/폴더가 포함되어 있지 않습니다. "~"와 "/i" 사이의 차이를 피하기 위해 두 목록을 모두 정리해야 합니다.
다음 단계는 랩톱 및 네트워크 드라이브와 목록을 "구별"하는 것입니다. 불행하게도 diff는 경로의 "dirname" 부분에 있는 공통성으로 인해 쉽게 삭제됩니다. 다음을 얻기 위해 find의 printf 형식을 수정해 보았습니다.
Basename <tab> File path <tab> YYYYMMDD.HHmm <tab> size
불행하게도 diff는 처음 몇 문자를 기준으로 일치하는 파일로 쉽게 오해될 수 있습니다.
내가 정말로 원하는 것은 diff가 파일 경로를 기반으로 행을 일치시킨 다음 YYYYMMDD.HHmm 태그를 기반으로 한 다음 크기를 기반으로 그 뒤의 문자를 일치시키는 것입니다. 이를 수행하도록 diff를 지시하는 방법이 있습니까?
추신:나는 양쪽 끝에서 Cygwin을 사용하고 있습니다. 안타깝게도 Windows 환경에서는 다른 사람과 공유하거나 다른 사람과 공유하는 파일의 이름에 공백이 포함됩니다. 일부 폴더 이름에는 구두점과 공백도 포함되어 있습니다. 필요한 경우 파일 경로 뒤에 태그(예: "QQQQ")를 삽입하여 문제를 완화할 수 있지만 찾기 출력의 필드는 이미 <tab>으로 구분되어 있습니다. 전체 파일 경로를 기반으로 행을 일치시키려면 "diff"를 수행한 다음 파일 경로 필드 뒤에 차이가 있는 경우 이를 찾아야 합니다.
답변1
물론 이 답변은 불완전합니다. 특히 테스트할 Windows 컴퓨터가 없기 때문입니다. 하지만 먼저 재택 근무를 용이하게 하기 위해 VPN 서비스를 제공하지 않음으로써 IT 부서가 귀하에게 끼치고 있는 심각한 피해에 대해 간략하게 언급하고 싶습니다. 물론, 이 전례 없는 시대에 그들의 더 큰 노력은 불필요한 속임수로부터 셀 수 없이 많은 시간을 절약할 것입니다.
귀하의 요구 사항을 거의 충족할 수 있다고 생각되는 유일한 솔루션은 rsync
CygWin에서 사용할 수 있는 솔루션입니다. 가정용 노트북과 사무실 네트워크 드라이브 간에 작동하는 SSH 링크를 생성할 때 문제가 발생합니다. 다행스럽게도 이것은 diff
일종의 Windows 호환 임시 파일 시스템보다 더 쉬운 수정 방법입니다. 설정해야 할 수도 있습니다.사무실SSH를 통해 컴퓨터를 집 노트북에 연결합니다(집 라우터에서 TCP 포트 패스스루 설정). 그러면 사무실 컴퓨터가 안정적으로 SSH를 통해 연결할 수 있도록 일종의 동적 DNS에 가정용 노트북을 설정해야 할 수도 있습니다. 나는 사무실 컴퓨터가 노트북 IP 127.0.1.1의 포트 22에 바인딩하기 위해 터널링된 TCP 연결을 생성하기 위해 노트북에 SSH로 접속할 것이라고 상상합니다. 그러면 랩톱에서 127.0.1.1(사무실 컴퓨터)로 rsync하는 것이 큰 도약이 되어서는 안 됩니다.
간단히 말해서:
알려진 DNS 이름을 통해 액세스할 수 있도록 홈 라우터의 IP에 동적 DNS를 설정하십시오.
홈 라우터에 패스스루 TCP 포트(일반적으로 포트 922)를 설정합니다.
SSH VPN 설정사무실 컴퓨터를 부팅할 수 있습니다사무실 방화벽을 통해 홈 라우터의 동적 DNS 이름의 포트 922에 나가는 연결을 연결하고(IT 부서는 들어오는 SSH 연결을 수용하지 않기 때문에) 들어오는 연결이 알려진 A에 바인딩을 시도할 수 있도록 홈 랩톱을 구성합니다. 로컬(노트북에 대한) IP의 사용되지 않은 TCP 포트.
사무실 컴퓨터가 집 노트북에 연결되면 SSH 터널은 다음을 수행할 수 있는 기능적인 VPN 터널을 제공해야 합니다.
- 집에 있는 노트북에서 127.0.0.1 포트 2222(또는 선택한 사용되지 않은 포트)로 SSH를 통해 사무실 컴퓨터에 로그인하세요.
rsync
가정용 노트북에서 127.0.0.1 포트 2222로 파일 업로드 또는 다운로드
물론 이는 어려운 작업이며 많은 단계가 필요합니다. StackExchange에는 이러한 단계를 완료하는 방법을 다루는 리소스가 이미 있는 것 같습니다.
더 나은 링크를 찾을 수도 있지만 시작하려면 다음을 수행하세요.
투표하다 ddclient
:https://apple.stackexchange.com/questions/75372/how-do-i-configure-dynamic-dns-when-my-router-does-not-support-it
짧은 SSH 터널 방법:연결된 컴퓨터에 대한 역방향 SSH 연결을 어떻게 구성합니까?
이러한 리소스와 스스로 찾을 수 있는 다른 리소스를 탐색함으로써 더 나은 솔루션의 조각을 모아 요구 사항에 맞는 사용 가능한 도구로 병합할 수 있다고 믿습니다. 행운을 빌어요! 그리고 이 일련의 작업을 완료하는 동안 궁금한 후속 질문을 게시하세요.