dd if=/dev/sda of=/mnt/usb1/image-of-old-win98.raw bs=1M
This drive is only one partition, so I think this one Linux line may be adequate. Can you give a quick breakdown of what this command is doing?
"if" is the input file (source); a disk device file in the example
"of" is the output file (destination); a regular file located on a mounted USB device in the example
"bs=1M" sets block size to 1 megabyte; dd will read 1M at a time into memory. The default is 512 (if bs is not present) and copy speed would be slower if you didn't use a large block size (where seek time > time to read a block). Although, with SSD, the seek time is much faster, it may not matter much. You can also add "status=progress" option to show how far along the copy is progressing.
"/dev/sda" in the example provided is very likely the disk that Linux was booted from. Your SSD [to be copied] will probably be the next; "/dev/sdb". This disk device file includes the MBR (master boot record) where the 4-entry partition table is located.
dd copies all disk blocks verbatim including blocks not allocated to files. As previously mentioned, you can compress dd output on-the-fly; eg: "dd if=/dev/sdb bs=1M | gzip > /DESTINATION_DIR/sdb-backup-20221003.gz"
However, you should first fill those unallocated blocks [containing random data] with repeating characters. You can do that [in Win98] by creating a file (or files) with with the same content (say, all "AAA...") until you almost fill the SSD. Then delete them all.