aboutsummaryrefslogtreecommitdiffstats
path: root/systemd/rhel-import-state
diff options
context:
space:
mode:
authorDavid Kaspar [Dee'Kej] <dkaspar@redhat.com>2017-03-21 17:32:17 +0100
committerDee'Kej <deekej@linuxmail.org>2017-03-22 14:42:25 +0100
commit3364452408877ad90a2492a08c6bf6d589ddb33b (patch)
treef282b2d0dc9a34dbdc280506fc462f1c672346ef /systemd/rhel-import-state
parentc5917b856db1e32a863fa78b54d5a7533c99577a (diff)
downloadinitscripts-3364452408877ad90a2492a08c6bf6d589ddb33b.tar
initscripts-3364452408877ad90a2492a08c6bf6d589ddb33b.tar.gz
initscripts-3364452408877ad90a2492a08c6bf6d589ddb33b.tar.bz2
initscripts-3364452408877ad90a2492a08c6bf6d589ddb33b.tar.xz
initscripts-3364452408877ad90a2492a08c6bf6d589ddb33b.zip
9.70-sync: systemd/rhel-import-state updated
Diffstat (limited to 'systemd/rhel-import-state')
-rwxr-xr-xsystemd/rhel-import-state34
1 files changed, 31 insertions, 3 deletions
diff --git a/systemd/rhel-import-state b/systemd/rhel-import-state
index 109ef757..43f40be1 100755
--- a/systemd/rhel-import-state
+++ b/systemd/rhel-import-state
@@ -1,11 +1,39 @@
#!/bin/bash
# rhel-import-state: import state files from initramfs (e.g. network config)
-# copy state into root
+# Copy state into root folder:
+# ============================
cd /run/initramfs/state
-find . -mindepth 1 -maxdepth 1 -exec cp -v -R --preserve=mode,ownership,timestamps,links -t / {} \;
-# run restorecon on the copied files
+IFS_backup=$IFS
+IFS=$'\n' # Process find's results line by line
+
+dirs_found=$(find . -type d)
+
+for dir in $dirs_found; do
+ pushd "$dir" > /dev/null
+
+ # Remove initial '.' char from the find's result:
+ dest_dir="${dir/\./}"
+
+ # Create destination folder if it does not exist (with the same rights):
+ if [[ -n "$dest_dir" && ! -d "$dest_dir" ]]; then
+ mkdir -p "$dest_dir"
+ chmod --reference="$PWD" "$dest_dir"
+ chown --reference="$PWD" "$dest_dir"
+ fi
+
+ # Copy all files that are not directory:
+ find . -mindepth 1 -maxdepth 1 -not -type d -exec cp -av -t "$dest_dir" {} \; > /dev/null
+
+ popd > /dev/null
+done
+
+IFS=$IFS_backup
+
+
+# Run restorecon on the copied files:
+# ===================================
if [ -e /sys/fs/selinux/enforce -a -x /usr/sbin/restorecon ]; then
find . -mindepth 1 -print0 | { cd / && xargs --null restorecon -iF; }
fi