Используя Tar, как сохранить разрешения родительских папок, если дать только определенный файл?

Такая же ошибка была и при работе за корпоративным прокси. Обновление сертификатов или использование http не помогло. Чтобы исправить это, я должен был добавить настройки прокси к каждому из epel репо:

for x in /etc/yum.repos.d/epel*; do sed -i '/^\[/ a proxy=http://YOUR.PROXY.HERE:8080' $x; done

Вставьте свои собственные данные прокси, конечно.

Мои файлы репо теперь выглядят так:

[epel]
proxy=http://YOUR.PROXY.HERE:8080
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
proxy=http://YOUR.PROXY.HERE:8080
...

-121--21885-

Я дам вам выписку кода для разнообразия, который делает это. Эта версия кода просто встраивает путь к изображению, а затем включает изображение в edj-файл.

OUTPUT_DIR="$HOME/.e/e/backgrounds"

TEMPLATE='
images { image: "@IMAGE@" USER; }
collections {
  group {
  name: "e/desktop/background";
  data { item: "style" "4"; item: "noanimation" "1"; }
  max: @WIDTH@ @HEIGHT@;
  parts {
    part {
    name: "bg";
    mouse_events: 0;
    description {
      state: "default" 0.0;
      aspect: @ASPECT@ @ASPECT@;
      aspect_preference: NONE;
      image { normal: "@IMAGE@"; scale_hint: STATIC; }
    }
    }
  }
  }
}
'

OFILE="$OUTPUT_DIR/variety_wallpaper_$RANDOM"

DIMENSION="$(identify -format "%w/%h" "$WP")"

if [ ! -z "$DIMENSION" ]; then
    WIDTH=$(echo $DIMENSION | cut -d/ -f1)
    HEIGHT=$(echo $DIMENSION | cut -d/ -f2)
    IMAGE="$(echo "$WP" | sed 's/[^[:alnum:]_-]/\\&/g')"

    if [ -z "$HEIGHT" -o "$HEIGHT" = "0" ]; then
        ASPECT="0.0"
    else
        ASPECT=$(echo "scale=9; $DIMENSION" | bc)
    fi
fi

printf "%s" "$TEMPLATE" | \
sed "s/@ASPECT@/$ASPECT/g; s/@WIDTH@/$WIDTH/g; s/@HEIGHT@/$HEIGHT/g; s|@IMAGE@|$IMAGE|g" > "$OFILE.edc"
edje_cc "$OFILE.edc" "$OFILE.edj" 2>/dev/null
rm "$OFILE.edc"

Полный источник: http://bazaar.launchpad.net/~peterlevi/variety/trunk/view/head :/data/scripts/set _ wallpaper

Если вы хотите встроить изображение, вы можете сделать следующее, я получил это, создав обои через просветления UI и декомпилируя его с edje_decc

images { image: "1920x1080.png" LOSSY 90; }
collections {
  group { name: "e/desktop/background";
  data { item: "style" "4"; }
    data.item: "noanimation" "1";
    parts {
      part { name: "bg"; mouse_events: 0;
        description { state: "default" 0.0;
          aspect: 1.777777778 1.777777778; aspect_preference: NONE;
          image { normal: "1920x1080.png";  scale_hint: STATIC; }
        }
      } 
    } 
  }
}

you затем построит тему с edje _ cc -id. -fd. e_bgdlg_new.edc -o 1920x1080.edj предполагая, что вышеуказанное было в файле e _ bgdlg _ new.edc , а ваше изображение находилось в том же каталоге, где вы вызывали сценарий

-121--195283-

Если сервер использует исходный демон System V init, можно также использовать файл /etc/inittab .

0
07.08.2018, 13:39
2 ответа

Чтобы продолжить -прекрасный ответ @schily, чтобы добавить каталог верхнего -уровня abcв архив, не добавляя ни одного из его подкаталогов, кроме def, с помощью GNU tar, вы я бы сделал:

tar -zcf file.tgz --no-recursion abc --recursion abc/def

С помощью libarchive bsdtarили paxвы всегда можете вернуться к findсозданию точного списка файлов, который вы хотите:

(printf 'abc\0'; find abc/def -print0) | bsdtar -zcnf file.tgz --null -T -
2
28.01.2020, 02:42

Ваша проблема в том, что директория abcне находится в архиве и поэтому не может быть восстановлена ​​из архива.

Поскольку он необходим, но отсутствует, tarсоздает его с разрешениями по умолчанию под вашими учетными данными.

Если вы хотите восстановить права еще и из abc, вам нужно поместить его в архив.

1
28.01.2020, 02:42

Теги

Похожие вопросы