blob: be2d13eba52b4f04fdf25a55bb17775fc239c1d1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#!/bin/bash
# import-state: import state files from initramfs (e.g. network config)
# Copy state into root folder:
# ============================
cd /run/initramfs/state
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 ] && [ -x /usr/sbin/restorecon ]; then
find . -mindepth 1 -print0 | { cd / && xargs --null restorecon -iF; }
fi
|