long time no see. So, we needed to to give some folders and files over to another company. We were supposed to keep the folder structure, but of course we should only copy certain folders, not all. And, of course, these were subfolders inside a list of project folders.
Do it by hand? Well, when you are dealing with 32K of folders and are supposed to copy only some subfolders out of 15K of them that is no fun…
This is the script I cooked up and it does the job just fine, except we ended up using a colleagues script instead of mine ;-)
(sorry for the format, it used to look nicer!)
# Version 0.6, 09/July/2014
# UseCase: Copy certain subfolders (one layer depth) and their contents from a source drive,
# ignoring folders that are not written in the files.txt list.
# This will work for one hierarchy of folders/subfolders.
# To have it work with a deeper folder structure, you need to add more for-loops.
# Beware though that this will exponentially increase the time this script takes to finish, as it cycles
# through every subfolder checking for every entry in the files.txt.
# Attention: Under Windows you need to cd to the destination directory for this to work!
# Otherwise rsync will give you an error.
# Also: Even under Windows the files.txt has to be UNIX format, or it won’t work!
# a nice formatted output log of this script where you can see what it did for every folder.
# the full rsync log. This is why we put rsync in -v mode.
# your data source.
# your destination. As this was running under Windows using cygwin, we needed this variable AND
# needed to cd into the destination folder!
# This file is used to determine which subfolders the script should copy.
for F in $(ls $SOURCE); do
for S in $(cat $FILES); do
echo \ >> $LOG;
echo “###### Begin ######” >> $LOG;
date >> $LOG;
if test -d $SOURCE/$F/$S;
echo “Copy folder:” >> $LOG;
echo $F/$S >> $LOG;
rsync -avz –log-file=$FAILED $SOURCE/$F/$S . >> $LOG ;
echo “Folder not found:” >> $LOG;
echo $F/$S >> $LOG;
date >> $LOG;
echo “###### End ######” >> $LOG;
Have you ever stumbled upon a cloned Linux system, in my case CentOS 6.5, where eth0 does not exist and eth1 isn’t started automatically?
When VMware clones a VM it gives its network card a new MAC address, ensuring that you don’t end up with several VMs with the same MAC. If your distro uses udev and it discoveres the new NIC, it gives it a different UUID, thus creating eth1 in the process, since it can’t match the MAC addresses and UUIDs of the NICs. This might break all sorts of scripts or configs.
Here is how to fix it:
First we need to remove the discovered and assigned UUIDs from udev:
rm -f /etc/udev/rules.d/70-persistent-net.rules
Secondly we need to edit the networking script for eth0:
Here you should change the old MAC address to the new one the VM got after cloning.
Thats it. eth0 should work as it used to on the parent VM.
today I am not writing because of a certain problem or thing I stumbled upon. The “news” I want to share is somewhat “old” (26 August 2013), too: VMware announced vSphere 5.5 and ESXi 5.5!
Why am I posting this? Besides some cool new features in Hardware Version 10 or on the VDP side and Hypervisor side, a mayor change that will affect how we use vCenter in our Company is: Full Mac OS X Client integration (including the plugin for vCenter WebClient).
So, we’ve all been there: A user is using his Mac with a local account. At some point IT needs to manage all Computers and Passwords, and thus this Mac together with it’s user needs to be ActiveDirectory managed. But of course: No setting, no file, nothing should change, because the user is king (and maybe the company’s boss that hates being upset, and even a changed background or shortcut-location upsets him….). Here’s how to do it:
Create a new local user with admin rights.
Logout of existing User and into the new admin user.
Delete the user you want to migrate. When the system asks, don’t delete or archive the user folder, just leave it where it is.
In a terminal issue the following command “sudo mv /Users/oldusername /Users/newusername” where newusername is the shortname of the AD User. This is critical!
If not already happened bind the Mac to the AD.
Use “chown” in terminal to change the owner of the users directory to the new domain user. Use the shortname, no need to write the FQDN of the AD.
Use “directory utility” to change the settings and check the box to create a “mobile account at login”, and check the second box, too.
Now logout, maybe reboot. (Sometimes it is needed, sometimes not, depending on how quickly the Mac gets the new AD binding.
Login using the new users shortname. It should ask for a mobile profile, create one!
You might need to update the keychain password.
Thats it: Enjoy your migrated user folder and settings. You shouldn’t notice any difference besides a new password ;-)
One note: The new user is a standard user without administrative rights. If you need to give him/her or the Administrator-Group admin rights, you can to this in the “Directory Utility” as well. Single users won’t work, use groups like this: DOMAINNAME\groupname .
After a while of backing up VMs via vSphere Data Protection (VDP) the backup jobs for four VMs failed. The message said they needed consolidation.
After the consolidation everything started to work for 3 VMs, but not for the fourth. Now I was getting the following error:
Execution error: E10056: Restore failed due to existing snapshot. Job Id: <job-id> (Full Client Path:)
The GUI said nothing about needed consolidation, no snapshots where created, either, and if you look into the VMs config you see that the hdd points to a vmdk, not to a 00001.vmdk snapshot file. So, everything seemed to be in order, right?
The solution therein: Old 000001.vmdk-files lying around unused, nowhere referenced or anything. Simply deleting them will help (but an additional move to another location is recommended just to be on the save side).
So with this everything is up and running again! Thanks vmware!