変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

コンテナの中でtarするシェル

[podman]コンテナからごそっとファイルを取り出す場合

1ファイルなら

# podman cp {コンテナ名}:コピー元フルパスのファイル名 コピー先ファイル名

で済む。2個でも済むけど、多い時はフォルダごと

# podman cp {コンテナ名}:コピー元フルパスのディレクトリィ名/ コピー元ディレクトリィ名

して後はtarコマンドでまとめれば普通はOK。

但し、コマンドを実行したユーザに所有者が変わってしまい後々面倒なことになるので、

できればコンテナの中でtarファイルにした方がいい。

# パラメータチェック
if [ $# -eq 3 ]; then
  CONTER_NAME=$1
  TARGET_DIR=$2
  TARGET_TAR_PATH_NAME=$3
  TARGET_TAR_NAME=$(echo $TARGET_TAR_PATH_NAME | rev | cut -d'/' -f1 | rev) ※ファイル名のみ取得
  TMP_DIR="/tmp" ※都合悪い場合は書換え
  CMD1="podman exec -it ${CONTER_NAME} /bin/bash -c 'cd ${TARGET_DIR}; ls -l; tar zcvf ${TMP_DIR}/${TARGET_TAR_NAME} . ; ls -l ${TMP_DIR}/${TARGET_TAR_NAME}'"
    # cd ${TARGET_DIR}
    # ls -l ※無くてもOK
    # tar zcvf ${TMP_DIR}/${TARGET_TAR_NAME} . 
    # ls -l ${TMP_DIR}/${TARGET_TAR_NAME} ※無くてもOK
  CMD2="podman cp ${CONTER_NAME}:${TMP_DIR}/${TARGET_TAR_NAME} $TARGET_TAR_PATH_NAME"
  CMD3="podman exec -it ${CONTER_NAME} /bin/bash -c 'ls -l ${TMP_DIR}/${TARGET_TAR_NAME} ; rm -f ${TMP_DIR}/${TARGET_TAR_NAME} ; ls -l ${TMP_DIR}/${TARGET_TAR_NAME};'"
    # ls -l ${TMP_DIR}/${TARGET_TAR_NAME} ※無くてもOK
    # rm -f ${TMP_DIR}/${TARGET_TAR_NAME}
    # ls -l ${TMP_DIR}/${TARGET_TAR_NAME} ※無くてもOK
  CMD4="ls -l $TARGET_TAR_PATH_NAME"
  
  echo CMD1:$CMD1
  echo CMD2:$CMD2
  echo CMD3:$CMD3
  echo CMD4:$CMD4
  
  /bin/bash -c "$CMD1" > log.txt
  wait $!  ※いい感じで待ってくれる
  /bin/bash -c "$CMD2" >> log.txt
  wait $!  ※いい感じで待ってくれる
  /bin/bash -c "$CMD3" >> log.txt
  wait $!  ※いい感じで待ってくれる
  /bin/bash -c "$CMD4" >> log.txt
  wait $!  ※いい感じで待ってくれる
else
  echo usage: $0  {PODMAN_CONTER_NAME}  {FULL_PATH_IN_CONTER}  {OUTPUT_TAR_FILE_NAME}
  exit 1
fi

念のためTARGET_TAR_NAMEは、../conf.tar.gz とか保存先ディレクトリィを指定できる様にしてある。

余談

TARGET_TAR_NAMEが空っぽになるコード

TARGET_TAR_NAME=   $(echo $TARGET_TAR_PATH_NAME | rev | cut -d'/' -f1 | rev)

$(・・・)の前に空白があると、TARGET_TAR_NAMEが空文字列になってしまう。

TARGET_TAR_NAME=$(echo $TARGET_TAR_PATH_NAME | rev | cut -d'/' -f1 | rev)

昔のUNIX(SystemV)の頃のawkも(…)や{…}の前後のスペーシングに敏感だったが今はそんな事ないんでウッカリしてた。




top