There are several possibilities.
1. You could create and restore per-table dump.
Dump of data:
clickhouse-client --query="SELECT * FROM table FORMAT Native" > table.native
Native is the most efficient format.
CSV, TabSeparated, JSONEachRow are more portable: you may import/export data to another DBMS.
Dump of metadata:
clickhouse-client --query="SHOW CREATE TABLE table" --format=TabSeparatedRaw > table.sql
Restore of metadata:
clickhouse-client < table.sql
Restore of data:
clickhouse-client --query="INSERT INTO table FORMAT Native" < table.native
2. Binary copy of data directory.
For non-replicated tables:
Stop the server, rsync/scp/etc... its data directory, start the server.
Make sure that file access rights and ownership are correct.
3. Binary backup and restore for MergeTree tables.
Do ALTER ... FREEZE PARTITION
https://clickhouse.yandex/reference_en.html#Manipulations%20with%20partitions%20and%20partsCreate table on another server.
Move generated backups to another server to 'detached' directory
and do ALTER ... ATTACH PARTITION on it.
Make sure that file access rights and ownership are correct.