Here is a hint about how proceeded to do what you are attempting. It applies when there is no windows partition. This could still work if there is a pair of windows partitions.
My method is cheating a bit by using Fedora utilities and some "au piff" values.
1) I start by installing the unformatted SSD.
2) After installing the unformatted SSD use gparted to force the SSD to be a gpt type device.
3) Use gparted to set aside your windows partitions.
Create an unassigned partition the total combined size of "/, home and swap" at the beginning of the area following the windows partition(s) blockout the rest of the unassigned partition with a temporary assignment.
It will appear something like the following
[UNASSIGNED REGION ]][reserved tmp space formatted ext4]
Leave around 20gigs for / . Typically I use about 8 gigs as an estimate for swap.
4) start a Fedora xx installation.
5) Let anaconda create the Linux partitions within that unassigned region. Do not use lvm, but standard, and either ext4 or xfs partition formats.
6) When anaconda starts the downloads, cancel anaconda. For the area you set aside, anaconda will have created the /, the /home, the /boot and the swap. You can deal with the swap later.
7 I usually rerun gparted and reformat and label those partitions that anaconda created within that unassigned area. (I use sdxSlash for the /, /sdxHome for /home, etc. where x is one of a, b, c or whatever drive the SSD will end up being.
8) Now do your copying as described by the previous responses.
After copying ...
To create the /etc/fstab entries, here is my easy method
After your copy of / to the / of the SSD.
from the existing system run sudo blkid /dev/ssd* > SSD/etc/fstab
The /etc/fstab will be the one on the SSD The /etc/fstab that you copied over will be overwritten. It was not valid for the SSD. You must create a new /etc/fstab as follows.
with vi, or your favourite editor, for each partition that is on the SSD, within that blkid listing you will have a UUID, a /dev/xxx and/or a LABEL
Delete from the blkid's /etc/fstab above, the unwanted lines.
Your must reformat fstab lines formatted created by the blkid program to something similar to one or more of the following.
I recommend reformatting each per tenant blkid line to the format UUID=uuuuuuuuuuuuuuuuuuuuuuuuu
UUID=bdf0d983-0430-4b8b-8dd1-474769e797dd /scratch xfs defaults,noatime 1 2
/dev/sdb2 /backup ext4 defaults 0 0
tmpfs /tmp tmpfs nodev,nosuid,size=1G 0 0 #/dev/tmpfs ramdisk
LABEL=sdb2backup /backup ext4 defaults,noatime 0 0
UUID=xxxxxxxxxxxxxxxx swap swap defaults,noatime 0 0
sudo blkid /dev/xxx* is a very very useful tool for (re)constructing a /etc/fstab
Since in the earlier step I assigned labels and names to each partition, I can easily tell which blkid generated fstab entry belongs to /, or to /home or /boot...
I listed step-by-step what I do to go harddisk to SSD. Follow the logic. Try a walk through and follow.
Don't forget, your target device is the SSD. If you make mistakes, just recreate the SSD as a gpt format SSD and go through it again.
Swap is likely to be on one of the blkid lines, do include it for now, until you create your swap file on another device. Thereafter, you delete the swap and with gparted, increase the size of the preceding partition. (Or keep it around incase you want to reinstall Fedora, but want to keep the same areas.
Since you are concerned about SSD's
Here is a small script to initiate fstrim.
Its titled fstrim.timer
systemctl enable fstrim.timer
systemctl list-unit-files | grep fstrim
I also insert the following line into the root logon's crontab
@reboot /usr/sbin/fstrim -a && echo "$(date)" > /root/fstrim.log
Just so I know when the last time fstrim was run.