"/"로 끝나는 텍스트 줄을 제거합니다.

"/"로 끝나는 텍스트 줄을 제거합니다.

rsync를 사용하여 변경된 파일 목록을 생성한 다음 해당 목록을 사용하여 파일을 s3에 업로드합니다.

rsync -av somefiles/ someotherfiles/ > list.txt


while read F  ; do
        echo $F
        aws s3 cp $lcDir/$F s3://durktest/blender/$F
done <list.txt

목록 내용의 예

swresample-2.dll
swscale-4.dll
tahoe.log
ucrtbase.dll
vcomp140.dll
vcruntime140.dll
2.78/
2.78/config/
2.78/config/bookmarks.txt
2.78/config/recent-files.txt
2.78/config/userpref.blend
2.78/datafiles/
2.78/datafiles/colormanagement/
2.78/datafiles/colormanagement/config.ocio
2.78/datafiles/colormanagement/filmic/
2.78/datafiles/colormanagement/filmic/filmic_desat65cube.spi3d
2.78/datafiles/colormanagement/filmic/filmic_false_color.spi3d
2.78/datafiles/colormanagement/filmic/filmic_to_0-35_1-30.spi1d
2.78/datafiles/colormanagement/filmic/filmic_to_0-48_1-09.spi1d
2.78/datafiles/colormanagement/filmic/filmic_to_0-60_1-04.spi1d
2.78/datafiles/colormanagement/filmic/filmic_to_0-70_1-03.spi1d
2.78/datafiles/colormanagement/filmic/filmic_to_0-85_1-011.spi1d
2.78/datafiles/colormanagement/filmic/filmic_to_0.99_1-0075.spi1d
2.78/datafiles/colormanagement/filmic/filmic_to_1.20_1-00.spi1d
2.78/datafiles/colormanagement/luts/
2.78/datafiles/colormanagement/luts/aces_to_xyz.spimtx
2.78/datafiles/colormanagement/luts/adx_adx10_to_cdd.spimtx

퓨즈 드라이버와 rsync를 s3에서 직접 사용하는 것보다 더 좋은 방법이 있습니까?

답변1

이를 수행하는 더 좋은 방법이 있습니다.aws s3 sync

aws s3 sync somefiles/ s3://durktest/blender

읽다AWS CLI 명령 참조더 알아보기

답변2

로 끝나는 줄을 제거하려면 /다음을 사용하세요 sed.

sed '/\/$/d'  

표준 입력에서 표준 출력으로 복사하거나 다음을 /사용합니다 grep.

grep -v '/$'  

아마도 다른 방법도 많이 있을 것입니다.

답변3

GNU 사용 xargs:

grep -v '/$' list.txt |
  xargs -rd '\n' -I@FILE@ aws s3 cp "$lcDir/@FILE@" s3://durktest/blender/@FILE@

( $lcDir포함되지 않는다고 가정 @FILE@)

코드에 몇 가지 문제가 있습니다.

  • 네가 부르고 있어 read시간도 없고 -r시간도 없어$IFS
  • $lcDir당신은 인용 하는 것을 잊었고$F
  • 사용해 보셨나요?echo
  • 그럼에도 불구하고 이 접근 방식을 사용하면 줄 바꿈이 포함된 파일 이름에 문제가 발생합니다.

루프를 정말로 사용하고 싶다면 다음과 같이 할 수 있습니다:

(
  ret=0
  while IFS= read -r F <&3; do
    case $F in
      (*/) ;;
      (*)
        printf '%s\n' "$F"
        aws s3 cp "$lcDir/$F" "s3://durktest/blender/$F" || ret=$?;;
    esac
  done 3< list.txt
  exit "$ret"
)    

duplicity어떤 AFAIK가 Amazon s3를 백엔드로 지원하는지 고려할 수도 있습니다 .

관련 정보