Switching web providers or installing a new server entails migrating all your domain's web pages and other files. While we won't cover implementation and configuration of a virtual domain here, as far as the web server is concerned, we will, instead, focus on how to transfer the files from your previous to your new server.
At first glance, this task may seem straightforward enough: simply download the files by FTP to your local system and upload them again to the new server. However, this approach has several serious drawbacks:
- File permissions will not be preserved.
- File ownership will change.
- ASCII files carrying an unknown extension may be treated as binaries.
- The files will be down- and uploaded in uncompressed form, wasting time, bandwidth and system resources.
If you proceed in this manner, you will be in for a lot of adjustment work until everything will run again as before. This applies especially to CGI scripts where directory and file permissions are critical to ensure functionality. Here's a method to simplify your migration and slash unnecessary workload overhead in the process.
1. Log in to your old server by Telnet, e.g. as user "domainowner".
2. Navigate to your domain directory, e.g.: cd /usr/www/htdocs/yourdomain
3. Next, compress the files into an archive by entering the following on the command line:
tar -cpz --same-owner -f yourdomain.tar.gz * .htaccess
The "tar" command requires the following syntax: tar -function -option file
function: c create archiv
option: p extract all protection information
z compress data with gzip
--same-owner create extracted files with the same ownership
f use archiv file
In our example above, the achive file "yourdomain.tar.gz" will be generated. You may chose any file name you prefer, as long as you stick to the extension ".tar.gz".
The wildcard character "*" (last but one in the command above) specifies that all files, including those residing in subdirectories, will be included in the archive. However, since this won't include files beginning with a period/dot character, you will have to list those files explicitly. In our example this is file ".htaccess".
4. Now, on the new server, you will have to configure user account "domainowner" and the directory "/usr/www/htdocs/yourdomain". Note that if directory names on your previous and your new server are not identical you may have to modify the path variables in your CGI scripts. Hence, it is strongly recommended to simply clone directory names.
5. Now, to upload the archive file "yourdomain.tar.gz" to your new system. There are two possible ways to do this:
a) directly, by logging in to your new server and by downloading the file from there using whatever FTP client is available, e.g. WU-FTP - please consult this program's documentation to learn how to do this as we cannot cover it here, or:
b) by downloading the file to your local system first and uploading it to the new server from there.
6. On the new system, log in via Telnet, e.g. as user "domainowner".
7. Switch into your domain directory, e.g. by typing: cd /usr/www/htdocs/yourdomain
8. Next, you will have to unpack the archive file. Enter the following command:
tar -xz -f yourdomain.tar.gz
function: x extract files from an archive
option: z uncompress data with gzip
f use archiv file
9. Log in via Telnet on your old server, e.g. as user "domainowner".
10. Switch to your domain directory, e.g. by entering the following command: cd /usr/www/htdocs/yourdomain
11. The following command will list all new and modified files:
/usr/bin/find -newer yourdomain.tar.gz > newerfiles.txt
This command will compare the files with the archive file you generated in Step #3 above. All new and modified files will now be listed in file "newerfiles.txt".
12. Edit the file "newerfiles.txt" and delete the line "." and the lines including directories, e.g.: "./graphics (You can do this either locally by downloading the file first and opening your text editor (ASCII format only!), or by opening your favorite online editor.
13. Next, the new and modified files must be packed into an archive by entering the following command: tar -cpz --same-owner -f yourdomain-new-files.tar.gz -T newerfiles.txt
(Unwrap line above if required: must be one single line!)
option: T get names to extract or create from file F
14. Now, upload the newly generated archive file "yourdomain-new-files.tar.gz" to your new server as explained above in Step #5 above.
15. To unpack the archive, enter this command: tar -xz -f yourdomain-new-files.tar.gz
Now, all files on your old and your new system have been synchronized and you can activate the migrated domain on its new hosting server.