我希望从/ home /备份所有用户,并为每个用户创建username.tar.gz。如何从/ home / for Bash获取用户列表?
答案 0 :(得分:1)
这应该让你开始:
#!/bin/bash
while IFS=: read user _ uid gid _ home _ ; do
[[ $home = /home/* && -d $home ]] || continue
echo "User $user ($uid:$gid) has a home directory: $home"
done < /etc/passwd
答案 1 :(得分:0)
#!/bin/bash
USERS = `ls /home | xargs -r`
for user in $USERS; do
tar -czf /home/$user.tar.gz /home/$user
done
答案 2 :(得分:0)
for file in /home*
do
tar -cvzf $file.tar.gz $file
done
for
循环可以扩展通配符*
以默认列出pwd
中的所有文件。由于此处为/home/*
,因此会展开/home/
目标中的所有文件和文件夹。因此,对于每次迭代,file
将在/home/
答案 3 :(得分:0)
for each in `ls -d /home/*`
do
# check whether the directory is present in /etc/passwd
if grep -q $each /etc/passwd
then
tar -czf ${each}.tar.gz ${each}
fi
done
此代码获取/home
目录中的每个条目,并检查/etc/passwd
文件中是否存在该条目。进行此检查是为了防止除用户主目录之外的其他文件和目录被标记。
答案 4 :(得分:0)
也许/ home下的某些文件夹不属于用户,或者用户的主目录没有用其用户名命名。
所以我认为您最好使用cat /etc/passwd | grep "/home" | awk -F: '{print $1}'
来获得在/ home中拥有主目录的用户,并使用cat /etc/passwd | grep "/home" | awk -F: '{print $6}'
来吸引用户&#39;家庭主持人。