
저는 변경된 파일을 FTP를 통해 개발 환경으로 전송하도록 되어 있는 GitLab의 CI 실행기를 작업 중입니다.
lftp
사용하기 쉽고 지나치게 복잡하지 않기 때문에 이를 위한 좋은 솔루션인 것 같았습니다.
나는 이것을 파일 전송에 사용하고 있습니다.
lftp -c "set ftp:ssl-allow no; open -u $USERNAME_DEV,$PASSWORD_DEV $HOST_DEV; mirror -Rvpn -O $PATH_DEV --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
문제가 되는 부분은 매개 -Rvpn
변수 세트, 특히 -n
. 이는 파일 변경 시간을 확인하여 작동할 가능성이 가장 높은 최신 파일만 미러링하도록 되어 있습니다.
이제 내 저장소는 정확한 시간을 사용하지만 내 서버는 한 시간 앞서(+1 대신 GMT+2) 있어 최신 파일을 확인할 때 거짓이 발생합니다.
을 제거할 수 있지만 -n
그러면 변경된(따라서 최신) 파일뿐만 아니라 전체 저장소가 복제됩니다.
lftp
에 대한 시간 오프셋을 정의 하여 파일 변경 날짜에 +1시간을 추가하거나 이와 유사한 방법이 있습니까 ? 나는 확인했다매뉴얼하지만 그런 것을 찾지 못했습니다.
답변1
링크한 매뉴얼을 보면 lftp
원격 사이트의 시간대를 정의할 수 있는 옵션이 있습니다. 이를 설정하고 lftp
올바르게 보상되는지 확인하는 것이 가치가 있을 수 있습니다.
ftp:시간대(문자열)
LIST 명령으로 반환된 목록의 시간에 대해 이 시간대를 가정합니다. 이 설정은 GMT 오프셋 [+|-]HH[:MM[:SS]] 또는 유효한 TZ 값(예: 유럽/모스크바 또는 MSK-3MSD,M3.5.0,M10.5.0/3)일 수 있습니다. 기본값은 GMT입니다. 환경 변수 TZ로 지정된 현지 시간대를 가정하려면 빈 값으로 설정하십시오.
또한 시간을 무시하는 스위치( --ignore-time
파일 크기에만 의존하도록 할 수 있음)와 "중요한" 시간을 정의하는 일부 스위치( --newer-than
및 --older-than
)가 있으므로 다음과 같은 방식으로 설정할 수 있습니다. 모든 파일이 전송되는 것은 아닙니다.